hxc丶 2021-12-01 09:04 采纳率: 75%
浏览 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 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 Ubuntu20.04无法连接GitHub
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥30 C++行情软件的tick数据如何高效的合成K线