C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

2つのツリーがC++で同一であるかどうかを判断するコードを記述します


この問題では、2本の木が与えられます。私たちのタスクは、2つのツリーが同一であるかどうかを確認するコードを作成することです。

配列の要素が同じ値と方向を持っている場合、2つのツリーは同一であると言われます。

2つのツリーがC++で同一であるかどうかを判断するコードを記述します

2つのツリーがC++で同一であるかどうかを判断するコードを記述します


両方のツリーの値と要素の位置が同じであるため、両方のツリーは同じです。

2つのツリーが同一であるかどうかを確認するには、ノードノードからの各ノードに移動し、それらが等しいかどうかを段階的に確認します。ノードのいずれかのポイントが等しくない場合は、ツリーが同一でないことを示す-1を返します。ツリー全体がトラバースされるか、両方のツリーが空になり、ツリーが同一であることを示す1が返されます。

上記のソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
class node{
   public:
   int data;
   node* left;
   node* right;
};
node* insertNode(int data){
   node* Node = new node();
   Node->data = data;
   Node->left = NULL;
   Node->right = NULL;
   return(Node);
}
int isIdentricalTrees(node* tree1, node* tree2){
   if (tree1 == NULL &amp;&amp; tree2 == NULL)
      return 1;
   if (tree1 != NULL &amp;&amp; tree2 != NULL){
      return( tree1->data == tree2->data &amp;&amp; isIdentricalTrees(tree1->left,
         tree2->left) &amp;&amp; isIdentricalTrees(tree1->right, tree2->right) );
   }
   return 0;
}
int main(){
   node *root1 = insertNode(4);
   node *root2 = insertNode(4);
   root1->left = insertNode(5);
   root1->right = insertNode(0);
   root1->left->left = insertNode(1);
   root1->left->right = insertNode(9);
   root1->right->left = insertNode(7);
   root2->left = insertNode(5);
   root2->right = insertNode(0);
   root2->left->left = insertNode(1);
   root2->left->right = insertNode(9);
   root2->right->left = insertNode(7);
   cout<<"Both the given trees are ";
   if(isIdentricalTrees(root1, root2))
      cout<<"identical";
   else
      cout<<"identical";
   return 0;
}

出力

Both the given trees are identical

  1. C++の2つの二分探索木のすべての要素

    2つのバイナリ検索ツリーがあり、これらのツリーにすべての要素が存在する値のリストを返す必要があり、リスト要素は昇順になります。したがって、木が次のような場合- その場合、出力は[0,1,1,2,3,4]になります。 これを解決するには、次の手順に従います- ansという配列を定義し、2つのスタックst1とst2を定義します curr1:=root1およびcurr2:=root2 ノードroot1とすべての左側のノードをst1に挿入し、ノードroot2とすべての左側のノードをst2に挿入します st1が空でないかst2が空でない場合 st1が空でない場合、および(st2が空で

  2. C++で2つの二分木をマージする

    2つの二分木があり、一方をもう一方を覆うように配置すると、2つのツリーの一部のノードがオーバーラップし、他のノードがオーバーラップするとします。それらを新しいバイナリツリーにマージする必要があります。マージルールは、2つのノードがオーバーラップしている場合、ノード値を合計して、マージされたノードの新しい値として計算するようなものです。それ以外の場合は、空でないノードが新しいツリーのノードとして使用されます。 したがって、木が- その場合、出力は-になります これを解決するには、次の手順に従います- メソッドはmergeTrees()です。これは、2つのツリーノードn1と