これは私のバイナリ ツリーの実装です (これは 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);
}
}
}
今私の質問は、たとえば、2 つのノードが右のサブツリーと左のサブツリーの両方で同じである場合、2 つのノードの最も低い共通の祖先を見つける方法です。
では、これの最下位共通祖先は何であるべきか
私は以下の質問でニック・ジョンソンの答えを理解しましたが、上記のタイプのツリーを行う方法を理解していません