本专栏内容为:leetcode刷题专栏,记录了leetcode热门题目以及重难点题目的详细记录
博主csdn个人主页:小小unicorn
⏩专栏分类:Leetcode
代码仓库:小小unicorn的代码仓库
关注我带你学习编程知识
题目来源:相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
判断两棵二叉树是否相同,也可以将其分解为子问题:
1.比较两棵树的根是否相同。
2.比较两根的左子树是否相同。
3.比较两根的右子树是否相同。
/**
* 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);
}
通过所有示例,问题得到解决。
总结:本题题目简单,其主要解决方法采取递归的方式来解决,利用递归前要判定几种特殊情况。