有关二叉树的一些练习题

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

二叉树的第三部分

这一部分 是 有关一些 二叉树 的 练习题

相同的树

在这里插入图片描述
附上代码

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
(1)非递归定义 树(tree)是由n(n≥0)个结点组成的有限集合。n=0的树称为空树;n>0的树T: ① 有且仅有一个结点n0,它没有前驱结点,只有后继结点。n0称作树的根(root)结点。 ② 除结点外n0 , 其余的每一个结点都有且仅有一个直接前驱结点;有零个或多个直接后继结点。 (2)递归定义 一颗大树分成几个大的分枝,每个大分枝再分成几个小分枝,小分枝再分成更小的分枝,… ,每个分枝也都是一颗树,由此我们可以给出树的递归定义。 树(tree)是由n(n≥0)个结点组成的有限集合。n=0的树称为空树;n>0的树T: ① 有且仅有一个结点n0,它没有前驱结点,只有后继结点。n0称作树的根(root)结点。 ② 除根结点之外的其他结点分为m(m≥0)个互不相交的集合T0,T1,…,Tm-1,其中每个集合Ti(0≤i<m)本身又是一棵树,称为根的子树(subtree)。 2、掌握树的各种术语: (1) 父母、孩子与兄弟结点 (2) 度 (3) 结点层次、树的高度 (4) 边、路径 (5) 无序树、有序树 (6) 森林 3、二叉树的定义 二叉树(binary tree)是由n(n≥0)个结点组成的有限集合,此集合或者为空,或者由一个根结点加上两棵分别称为左、右子树的,互不相交的二叉树组成。 二叉树可以为空集,因此根可以有空的左子树或者右子树,亦或者左、右子树皆为空。 4、掌握二叉树的五个性质 5、二叉树的二叉链表存储。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值