leetcode-相同的树-32

题目要求
  给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

思路
  如果两个节点同时为空,那么这个节点就是相等的,可以返回true,排除了同时为空,那么只要里面有一个为空,那么两个树的这个节点就不一样,树也就不一样,如果都不为空,那么如果两个节点的值不一样,那么两个树也不一样,然后再递归左子树和右子树,如果左子树已经不同了,那么就是不用再执行右子树了。

图解
在这里插入图片描述

代码实现

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
	if (p == NULL && q == NULL)
	{
		return true;
	}
	if (q == NULL || p == NULL)
	{
		return false;
	}
	if (p->val != q->val)
	{
		return false;
	}

	return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/114846001
今日推荐