【软考】——树与二叉树


    小编最近和树、二叉树交流甚多,自认为对其很是清晰有条理,突然发现不是这个样子的,尤其被二叉树惹的一塌糊涂,不得已区分总结来给自己缕缕思路。何为树?何为二叉树?两者的联系?区别?小编为何被其所困扰呢?待小编一一道来~~~


    树与二叉树


    树

    一种典型的非线性数据结构,由一个或多个节点组成的有限集合。需要满足两个条件:

    1.有一个特定的结点,称为根节点;

    2.其余节点分成m(m>=0)个互不相交的有限集合,每个集合又都是一棵树,称为根节点的子树。


    二叉树

    有限的结点集合,该集合或者为空,或者由一个根节点及其两颗互不相交的左、右二叉子树所组成。


    区别

    1.树的每个结点可以有多个子结点,即树的度,如下图,A的度为3,B的度为2,没有子结点的结点度为0,称为叶子节点。


      二叉树的每个结点的子结点不大于2,非叶子结点有1个或两个子结点。

    2.树有三种遍历方式:前序遍历、后序遍历、层次遍历;

      二叉树同样有三种遍历方式:前序遍历、中序遍历、后序遍历。



    详解二叉树

    树与二叉树相信大家都没什么问题,最容易迷惑的还是二叉树,在这几种二叉树之间,小编没少死磕,是时候醒醒了。


    满二叉树与完全二叉树

    看到标题有没有在大脑里浮现出一张网络图?给大家两分钟时间给自己讲解一遍两者的区别和联系————

    小编来说树~~~

    满二叉树:二叉树的深度为k,则此二叉树的结点数一定是2^(k-1),其中(k>=1)。(多说一句,二叉树的深度是从1开始的,没有0层滴)。

    完全二叉树:深度为k,有n个结点,且此二叉树中各结点能够与深度k的顺序编号的满二叉树从1到n标号的结点相对应。



    对其一句话概括就是:满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。


    二叉查找树

    又称为二叉排序树。

    特性:在二叉排序树中,左子树上所有的结点的值都小于根结点,右子树上上所有的值都大于根结点;左右子树本身又是一棵二叉排序树。

    对二叉排序树进行中序遍历,便可得到一个排好序的结点序列,而且序列是递增的。


    平衡二叉树

    又称为AVL树,平衡,也就是说树中任一结点的左右子树的高度都大致相同。左子树深度-右子树深度=m,当m=-1、0、1时,二叉树是平衡的,如果m<-1或者m>1,则二叉树是不平衡的。

    完全平衡:任一结点的左右子树的高度均相同,满二叉树就是个活生生的例子。


    图中,第一棵树:对于根结点,左子树深度为2,右子树深度为1,深度差为1,为平衡二叉树;

          第二棵树:对于根结点,左子树深度为0,右子树深度为3,深度差为-3,为非平衡二叉树


    哈夫曼树

    哈夫曼树构造过程:


    分析:从所给的序列中选择两个最小的构成一棵二叉树,然后将所构成二叉树的根结点放入原序列中,继续比较取两个最小值,依次进行,指导所有记录都被添加到二叉树中。

    计算带权路径长度:找出原序列的所有记录:2  4  5  7;用记录的键值与根结点到记录所在位置所经的边数相乘,所得结果的和即为带权路径长度。

    图中例子的带权路径长度:(2+4)*3+5*2+7=35


    总结

    二叉树中的知识点有很多相似之处,如不多加注意很容易便会用错,通过这一遍总结,小编对树和二叉树,尤其是各种二叉树又牢牢的巩固了一遍,当然在总结的过程中也对这些树们有了严格的认识。相信下次再遇到这样的问题,小编不会再犯迷糊了~~~



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值