目录
- 题目
- 题目要求
- 示例
- 解答
- 方法一、
- 实现思路
- 时间复杂度和空间复杂度
- 代码
- 方法二、
- 实现思路
- 时间复杂度和空间复杂度
- 代码
题目
相同二叉树判断
题目要求
题目链接
示例
解答
方法一、
递归
实现思路
如果两棵树从根结点一起访问,当有一个结点不相等时就返回false,如果结点都相等就返回true。
时间复杂度和空间复杂度
时间复杂度:O(N)
空间复杂度:O(N)
代码
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
//如果两个结点都为空,则相等,返回true
if(p==NULL&&q==NULL)
{
return true;
}
//如果有一个结点为空,另一个不为空,则两个结点不相等,即两棵二叉树不相等,
if(p==NULL||q==NULL)
{
return false;
}
//如果两个结点的值不相等,则两个结点不相等,即两棵二叉树不相等
if(p->val!=q->val)
{
return false;
}
//如果p和q两个结点相等,就判断p结点的左子树和q结点的左子树是否相等,判断p结点的右子树和q结点的右子树是否相等,如果都相等就返回true,如果有一组结点不相等就返回false
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}
方法二、
实现思路
时间复杂度和空间复杂度
代码