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と