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

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 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值