给你两棵二叉树的根节点
p
和q
,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 原题出自 100. 相同的树 - 力扣(LeetCode)
解题思路: 通过递归调用,对两棵树的每一个节点进行判断
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
typedef struct TreeNode TNode;
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);
}