इस समस्या में हमें दो पेड़ दिए जाते हैं। हमारा काम यह जांचने के लिए एक कोड लिखना है कि दोनों पेड़ एक जैसे हैं या नहीं।
दो पेड़ों को समान कहा जाता है यदि सरणियों के तत्वों का मान और अभिविन्यास समान हो।
उदाहरण
<मजबूत>
चूँकि दोनों पेड़ों के मूल्य और तत्वों की स्थिति समान है, इसलिए दोनों पेड़ समान हैं।
यह जांचने के लिए कि क्या दो पेड़ समान हैं, हम नोड नोड से प्रत्येक नोड पर जाएंगे और चरण दर चरण उनकी समानता की जांच करेंगे और यदि किसी भी बिंदु पर नोड्स बराबर रिटर्न -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