编写代码来确定两棵树在 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
广告