Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 두 트리가 동일한지 확인하는 코드 작성

<시간/>

이 문제에서는 두 개의 나무가 제공됩니다. 우리의 임무는 두 트리가 동일한지 여부를 확인하는 코드를 작성하는 것입니다.

배열의 요소가 동일한 값과 방향을 가지면 두 트리가 동일하다고 합니다.

<강한> C++에서 두 트리가 동일한지 확인하는 코드 작성

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