[LeetCode] 100. 相同的树
程序员文章站
2022-06-11 18:52:35
...
1 题目描述
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
2 解题思路
方法一:递归
直觉
最简单的策略是使用递归。首先判断 p 和 q 是不是 None,然后判断它们的值是否相等。
若以上判断通过,则递归对子结点做同样操作。
复杂度分析
时间复杂度 : O(N),其中 N 是树的结点数,因为每个结点都访问一次。
空间复杂度 : 最优情况(完全平衡二叉树)时为 O(log(N)),最坏情况下(完全不平衡二叉树)时为 O(N),用于维护递归栈。
作者:LeetCode
链接:https://leetcode-cn.com/problems/same-tree/solution/xiang-tong-de-shu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3 解决代码
- 方法1
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p == null && q == null){
return true;
}
//这里表示的是正确的判断条件
if(p!=null && q!=null && p.val == q.val){
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}else{
return false;
}
}
}
- 方法2
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
//错误的全列出来 然后排除掉
if(p == null && q == null){
return false;
}
if(p == null || q == null){
return false;
}
if(p.val != q.val){
return false;
}
//最终剩下的是正确的
return isSameTree(t.left,q.left)&&(p.right,q.right);
}
}
推荐阅读
-
LeetCode 426. 将二叉搜索树转化为排序的双向链表(BST中序循环遍历)
-
leetcode 113 剑指offer 面试题34. 二叉树中和为某一值的路径(python3)
-
leetcode算法练习——不同的二叉搜索树
-
leetcode算法练习——不同的二叉搜索树
-
LeetCode第958题 二叉树的完全性检验
-
Leetcode刷题记录——958. 二叉树的完全性检验
-
leetcode 第 958 题:二叉树的完全性检验(C++)
-
leetcode 958 二叉树的完全性检验(超简洁写法)
-
leetcode 958. 二叉树的完全性检验(输出是否是完全二叉树 dfs/bfs每次假如队列的时候判断 值是不是sz)
-
Java实现 LeetCode 637 二叉树的层平均值(遍历树)