Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
<pre name="code" class="cpp">#include <iostream>
using namespace std;
struct TreeNode{
int data;
TreeNode *left;
TreeNode *right;
TreeNode(int x):data(x),left(NULL),right(NULL) {}
};
bool isSameTree(TreeNode *p,TreeNode *q)
{
if (p == NULL && q == NULL) //终止条件。也就是两棵树都找到了最后一个节点了。
return true;
if (p == NULL || q == NULL || (p->data != q->data)) //终止条件。1,有一个数到了最后一个节点,但是另一个没有,2,如果数值不相等。
return false;
bool left = isSameTree(p->left,q->left); //左子树是否相等
bool right = isSameTree(p->right,q->right); //右子树是否相等
return left&&right;
}