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