数据结构速成--树和二叉树

由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。  

 气死了气死了,为什么这个图片会有水印,而且水印还这么奇怪!!!!!!!

目录

一、树的基本概念

二、二叉树

​三、二叉树的遍历

1. 四种遍历

2. 线索树

四、树和森林

1. 树转换成二叉树

2. 森林转换成二叉树

3. 二叉树转换成森林

五、二叉排序树

六、哈夫曼树

1. 构造哈夫曼树

2. 哈夫曼编码

【书后典型例题】


一、树的基本概念

  • 根到结点的唯一路径上的任意结点,称为结点的祖先
  • 路径上最接近结点的结点称为的双亲,而为结点的孩子
  • 树中一个结点的孩子个数称为该结点的,树中结点的最大度数称为树的度。
  • 度大于的结点称为分支结点(又称非终端结点);度为(没有孩子结点)的结点称为叶子结点(又称终端结点)。
  • 有相同双亲的结点称为兄弟
  • 结点的层次从树根开始递归定义,根结点为第层,它的子结点为第层。
  • 结点的深度是从根结点开始自顶向下逐层累加。
  • 结点的高度是从叶结点开始自底向上逐层累加。
  • 树的高度(或深度)是树中结点的最大层数。
  • 有序树无序树。树中结点的各子树从左到右是有次序的,不能互换,称该树为有序树,否则称为无序树。假设图为有序树,若将子结点位置互换,则变成一颗不同的树。
  • 路径路径长度。树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。

二、二叉树

三、二叉树的遍历

1. 四种遍历

先序(前序)遍历:根->左子树->右子树

中序遍历:左子树->根->右子树

后序遍历:左子树->右子树->根

层序遍历:按顺序把每一行的结点输出

注意:在知道遍历的结果,需要还原二叉树时,只知道一种遍历结果是不能还原的。必须要知道中序遍历+其他任一种遍历结果才可还原。还原二叉树的重点就在于找到根节点。

 以前序遍历+中序遍历为例:

2. 线索树

        什么线索树就先把对应的遍历结果写出来。用虚线的箭头画出前驱和后继结点。没有左孩子就画前驱,没有右孩子就画后继,叶子结点既要画前驱也要画后继。

注意:遍历结果的最后一个有时候没有右孩子,这个时候要画一个指向null。第一个有时候没有左孩子,也要指向null

PS: 看不懂这里的可以看一下最后一部分的例题。

四、树和森林

         树的存储结构:双亲表示法、孩子表示法、孩子兄弟表示法

1. 树转换成二叉树

2. 森林转换成二叉树

3. 二叉树转换成森林

        实际上就是森林变成二叉树的逆过程。

五、二叉排序树

六、哈夫曼树

1. 构造哈夫曼树

 注意:这个地方是要从新构造的结点和其他剩余的结点里取最小的继续构造,但是当遇到新构造的结点值在其他剩余的结点里有相同的值,优先使用原来就提供的结点。(可以看一下最后一个例题,顺便了解一下初态和终态

2. 哈夫曼编码

        这一步就很简单了,左子树为0,右子树为1,然后从根节点开始读就可以了。

【书后典型例题】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值