编写代码来确定两棵树在 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 &amp;&amp; tree2 == NULL)
      return 1;
   if (tree1 != NULL &amp;&amp; tree2 != NULL){
      return( tree1->data == tree2->data &amp;&amp; isIdentricalTrees(tree1->left,
         tree2->left) &amp;&amp; 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

更新于:2020 年 4 月 17 日

271 次浏览

开启你的 职业生涯

完成课程以获得认证

开始
广告