文章目录
二叉树的第三部分
这一部分 是 有关一些 二叉树 的 练习题
相同的树

附上代码
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p!= null && q == null || p == null && q != null) {
return false;
}
if(p == null && q == null ) {
return true;
}
if(p.val != q.val) {
return false;
}
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}
}
时间复杂度
在来一个 小问题 这 函数 的时间复杂度 为 多少
这里我们都要遍历两颗树的结点 ,这里 需要看一下p和 q 的每棵树的结点个数
这里求 p 的 结点M 和 q 的 结点树N 的最小值
0(min(M,N))
看完了相同的 树那么接下来 来看 一道类似的题目
另一棵树的子树


附上代码
class Solution {
private boolean isSamTree(TreeNode p,TreeNode q) {
if(p == null && q != null || p != null && q == null) {
return false;
}
if(p == null && q == null) {
return true;
}
if(p.val != q.val) {
return false;
}
return isSamTree(p.left,q.left) && isSamTree(p.right,q.right);
}
public boolean isSubtree(TreeNode root, TreeNode subRoot) {
if(root == null || subRoot == null) {
return false;
}
// 根结点和 subroot是不是两颗相同的树
if(isSamTree(root,subRoot)) {
return true;
}
//subRoot 是不是 root 的左子树
if(isSubtree
二叉树算法解析:遍历与性质

本文深入探讨了二叉树的相关算法,包括判断两棵树是否相同、查找一棵树是否为另一棵树的子树、平衡二叉树的检测以及对称二叉树的识别。通过递归实现,详细分析了各算法的时间复杂度,如相同树的时间复杂度为O(min(M,N)),子树的时间复杂度为O(S*T),平衡二叉树的时间复杂度为O(N)。此外,还介绍了如何使用先序遍历来创建二叉树,并提供了二叉树的层序遍历的解决方案。
最低0.47元/天 解锁文章
671

被折叠的 条评论
为什么被折叠?



