提示:
通过分析这个题目,可知道传入两颗二叉树的根节点,然后逐个比较这两个二叉树的结构和值是否都一样,不同返回false
,相同返回true
。
我们将一颗二叉树分为根节点,左子树,右子树,左子树与右子树均是一颗独立的树,同时比较根节点的值,以及判断两个根节点的左右节点是否都存在即可。
若两颗子树的节点均为空,则为空:
if(p == NULL && q == NULL)
{
return true;
}
若两颗子树的根节点左右子树不同(即结构不一致),则返回false
if(p == NULL || q == NULL)
{
return false;
}
若左右子树的跟节点值不同,则返回false
if(p->val != q->val)
{
return false;
}
继续递归节点的左右子树,并且返回true
or false
return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
/**
* 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 true;
}
if(p == NULL || q == NULL)
{
return false;
}
if(p->val != q->val)
{
return false;
}
return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
}