hxc丶 2021-12-01 09:04 采纳率: 78.3%
浏览 38
已结题

求完全二叉树的最近公共祖先问题

编译通过了但是代码没有输出

代码如下:

#include
#include
using namespace std;

struct TreeNode{
    int x;
    TreeNode* left;
    TreeNode* right;
};

TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q){
    if(root==p||root==q||!root)return root;
       
    TreeNode* left=lowestCommonAncestor(root->left,p,q);
    TreeNode* right=lowestCommonAncestor(root->right,p,q);
       
    if(!left&&!right)return NULL;
    else if(left&&!right)return left;
    else if(right&&!left)return right;
       
    return root;
}

TreeNode* Search(TreeNode* &root,int i){
    if((root->x)==i){
        return root;
    }
    TreeNode* pNode=NULL;
    if(root->left!=NULL){
        pNode=Search(root->left,i);
        if(!pNode){
            return pNode;
        }
    }
    if(root->right!=NULL){
        pNode=Search(root->right,i);
        if(!pNode){
            return pNode;
        }
    }
    return NULL;
}

void CreateTree(TreeNode* &root,int a,int len,int loc)
{
    if(loc>=len){root=NULL;return;}
    root->x=a[loc];
    CreateTree(root->left,a,len,2
loc+1);
    CreateTree(root->right,a,len,2*(loc+1));
}

int main(){
    TreeNode* root=(TreeNode*)malloc(sizeof(TreeNode));
    int a[1000];
    for(int i=0;i<1000;i++){
        a[i]=i+1;
    }
    CreateTree(root,a,999,0);
    int m,n,Y;
    cin>>Y;
    for(int i=0;i<Y;i++){
        cin>>m>>n;
        TreeNode* p=Search(root,m);
        TreeNode* q=Search(root,n);
        TreeNode* r=lowestCommonAncestor(root,p,q);
        cout<x<<endl;
    }
}

望大神解答!

  • 写回答

2条回答 默认 最新

  • 五一编程 2021-12-01 09:19
    关注
    
    void CreateTree(TreeNode* &root,int a,int len,int loc)
    {
        if(loc>=len){root=NULL;return;}
        root->x=a[loc];
    root->left = (TreeNode*)malloc(sizeof(TreeNode));
        CreateTree(root->left,a,len,2loc+1);
    root->right = (TreeNode*)malloc(sizeof(TreeNode));
        CreateTree(root->right,a,len,2*(loc+1));
    }
    

    最后记得释放

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月23日
  • 已采纳回答 9月15日
  • 创建了问题 12月1日

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?