LCA двоичного дерева из двух узлов, если эти два узла встречаются много раз
Это моя реализация моего двоичного дерева (это не код для 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);
}
}
}
Теперь мой вопрос заключается в том, как найти наименьшего общего предка двух узлов, если, например, два узла одинаковы как в правом поддереве, так и в левом поддереве.
так, что должно быть наименьшим общим предком этого
Я понял ответ Ника Джонсона в приведенном ниже вопросе, но я не понимаю, как сделать вышеупомянутый тип дерева
Как найти наименьшего общего предка двух узлов в любом двоичном дереве?