編寫程式碼來確定兩棵樹在 C++ 中是否相同
在此問題中,我們得到了兩棵樹。我們的任務是編寫程式碼來檢查這兩棵樹是否相同。
如果陣列元素具有相同的值和方向,則這兩棵樹被稱為相同。
示例
由於這兩棵樹具有相同的值和元素位置,因此這兩棵樹是相同的。
要檢查兩棵樹是否相同,我們將從結點到每個結點,並一步一步地檢查它們的相等性,如果在任何點處兩個結點不相等,則返回 -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
廣告