两颗树的情况可能如下图所示:
1 1
/ \ / \
2 3 2 3
1 1
/ \ / \
2 1 1 2
求解思路:1.先判断两棵树是否为空,如果均为空,那么两棵树肯定相同;如果有一个为空,则不同。
2.在两棵树都不为空的情况下,先判断根结点数据是否相同,不相同则不同,否则,判断两棵树的左右子树是否相
同,只要有一个不同则不同,否则相同。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
if(p != NULL && q == NULL)
{
return false;
}
if(p == NULL && q != NULL)
{
return false;
}
if(p == NULL && q == NULL)
{
return true;
}
if(p->val != q->val)
{
return false;
}
bool left = isSameTree(p->left,q->left);
if(left != true)
{
return false;
}
else
{
return isSameTree(p->right,q->right);
}
}