• 【数据结构】树 有关树的认识


    1.有关树的术语

            1.结点

                    和链表类似,树存储结构中也将存储的各个元素称为“结点”。

                    对于树中某些特殊位置的结点,还可以进行更细致的划分,比如:

                    父结点(双亲结点)、孩子结点和兄弟结点:

                            树根结点(简称“根节点”):特指树中没有双亲(父亲)的结点,一棵树有且仅有一个跟结点。

                            叶子结点(简称“叶节点”):特指树中没有孩子的结点,一棵树可以有多个叶子结点。

            2.子树

                    通常我们将一棵树中的几个结点构成的“小树”称为这棵树的“子树”。

                    树也可以这样定义:树是由根节点和若干棵子树构成的。

                    注意:单个结点也可以看作是一棵树,该节点即为根节点。

            3.结点的度

                     一个结点拥有有子树的个数,就称为该节点的度。

                    比较一棵树中所有结点的度,最大的度即为整棵树的度。

            4.结点的层次

                    从一课数的树根开始,树根所在层为第一层,根的孩子结点所在的层为第二层,依次类推。树中结点层次的最大值,称为这棵树的深度或者高度。

            5.有序树和无序数

                    如果一棵树中,各个结点左子树和右子树的位置不能交换,那么这棵树就称为有序树。反之,如果树中结点的左、右子树可以互换,那么这棵树就是一颗无序树。

                    在有序树中,结点最左边的子树称为“第一个孩子”,最右边的称为“最后一个孩子”。

            6.森林

                    由m (m >= 0)个互不相交的数组成的集合就称为森林。

                    前面讲到,数可以理解为是由根结点和若干子树构成的,而这若干子树本身就是一个森林,因此树还可以理解为是由根结点和森林组成的。

             7.空树

                    空树指的是没有任何结点的树,连根结点都没有。

        总结:树是一种非线性存储结构,通常用来存储逻辑关系为“一对多”的数据。

                    使用树结构存储的各个结点,他们之前的关系类似于家谱中的成员关系,比如有父子关系、兄弟关系、表兄弟关系等。

    2.二叉树

            满足以下两个条件的数就是二叉树:

                    1.本身是有序树;

                    2.2树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;

    二叉树具有以下几个性质:

            1. 二叉树中,第 i 层最多有 2i-1 个结点。

            2. 如果二叉树的深度为 K,那么此二叉树最多有 2K-1 个结点。

            3. 二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1。 

            二叉树还可以继续分类,衍生出满二叉树和完全二叉树。

    满二叉树

            如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。

             满二叉树除了满足普通二叉树的性质,还具有以下性质:

                    1. 满二叉树中第 i 层的节点数为 2i-1 个。

                    2. 深度为 k 的满二叉树必有 2k-1 个节点 ,叶子数为 2k-1。

                    3. 满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在最底 层。 4. 具有 n 个节点的满二叉树的深度为 log2(n+1)。

    完全二叉树

            如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二

    叉树被称为 完全二叉树。

    完全二叉树除了具有普通二叉树的性质,它自身也具有一些独特的性质,比如说,n 个结点的完全

    二叉 树的深度为 ⌊log2n⌋+1。 对于任意一个完全二叉树来说,如果将含有的结点按照层次从左到右

    依次标号,对于任意一个结点 i , 完全二叉树还有以下几个结论成立:

                     1. 当 i>1 时,父亲结点为结点 [i/2] 。(i=1 时,表示的是根结点,无父亲结点)

                     2. 如果 2i>n(总结点的个数) ,则结点 i 肯定没有左孩子(为叶子结点);否则其左孩子是结点 2i 。

                    3. 如果 2i+1>n ,则结点 i 肯定没有右孩子;否则右孩子是结点 2i+1 。

  • 相关阅读:
    Vue中巧用computed配合watch实现监听多个属性的变化
    Python使用turtle绘制简单图形-绘制“圆“turtle.circle()
    华为发布:30岁以下员工仅占28% 你信吗?
    【开源教程10】疯壳·开源编队无人机-串口(基础收发)
    如何使用VS创建QVTKOpenGLNativeWidget应用
    FFmpeg学习总结
    网络通信编程基础,BIO,NIO
    bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
    WSL 常用命令
    【老生谈算法】matlab实现小波分析源码——小波分析
  • 原文地址:https://blog.csdn.net/m0_73189710/article/details/127846341