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);
}
}
}

Теперь мой вопрос заключается в том, как найти наименьшего общего предка двух узлов, если оба узла одинаковы как в правом поддереве, так и в левом поддереве.
например
Из 4 и 5 видно, что 4 и 5 присутствуют как в правом поддереве, так и в левом поддереве корня (произошло два раза)

так, что должно быть наименьшим общим предком этого

я понял ответ Ника Джонсона в приведенном ниже вопросе, но я не понимаю, как сделать вышеупомянутый тип дерева

Как найти наименьшего общего предка двух узлов в любом двоичном дереве?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]