2つのツリーがC++で同一であるかどうかを判断するコードを記述します
この問題では、2本の木が与えられます。私たちのタスクは、2つのツリーが同一であるかどうかを確認するコードを作成することです。
配列の要素が同じ値と方向を持っている場合、2つのツリーは同一であると言われます。
例
両方のツリーの値と要素の位置が同じであるため、両方のツリーは同じです。
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 && tree2 == NULL) return 1; if (tree1 != NULL && tree2 != NULL){ return( tree1->data == tree2->data && isIdentricalTrees(tree1->left, tree2->left) && 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
-
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が空で
-
C++で2つの二分木をマージする
2つの二分木があり、一方をもう一方を覆うように配置すると、2つのツリーの一部のノードがオーバーラップし、他のノードがオーバーラップするとします。それらを新しいバイナリツリーにマージする必要があります。マージルールは、2つのノードがオーバーラップしている場合、ノード値を合計して、マージされたノードの新しい値として計算するようなものです。それ以外の場合は、空でないノードが新しいツリーのノードとして使用されます。 したがって、木が- その場合、出力は-になります これを解決するには、次の手順に従います- メソッドはmergeTrees()です。これは、2つのツリーノードn1と