0

这是我的二叉树的实现(这不是 Lca 的代码,只是二叉树的正常实现,只是为了了解我是如何构造二叉树的)

void insert(int n)
{
create(&root,n);
}
void create(node** temp,int n)
{
if(root==NULL)
{
(*temp)=new node;
(*temp)->data=n;
(*temp)->right=NULL;
(*temp)->left=NULL;
root=*temp;
}
else
{
if((*temp)==NULL)
{
(*temp)=new node;
(*temp)->data=n;
(*temp)->right=NULL;
(*temp)->left=NULL;
}
else
{
char c;
cout<<"enter the direction";
cout<<endl;
cin>>c;
if(c=='l')
create(&((*temp)->left),n);
else
create(&((*temp)->right),n);
}
}
}

现在我的问题是如果两个节点在右子树和左子树中都相同,如何找到两个节点的最低共同祖先 4 和 5 的 lca 看到 4 和 5 在根的右子树和左子树中都存在(发生两次)

那么这个的最低共同祖先应该是什么

我在下面的问题中理解了 nick johnson 的答案,但我不明白如何做上述类型的树

如何在任何二叉树中找到两个节点的最低共同祖先?

4

0 回答 0