题目描述
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例
输入:
输出: true
示例2 :
输入:
输出: false
示例3 :
输入:
输出: false
来源:力扣
链接:相同的树
思路:
首先对传入的p, q节点进行判断
- 全为 NULL, 返回true(认定空树为相同树)
- 其中一个节点为空, 另一个不为空, 返回 false
- p, q节点均不为NULL, 判断val是否相同, 相同则递归判断p的左子树,q 的左子树, p的右子树,q的右子树
代码示例:
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if (p == NULL && q == NULL)
{
return true;
}
if (p && q == NULL)
{
return false;
}
if (q && p == NULL)
{
return false;
}
if (p->val == q->val)
{
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
return false;
}