上半月在干嘛我也不知道,反正就是没看视频学习。还好在6月前看完了数据结构
♥☺九、第九节 二叉树
- 二叉树特点:每个结点最多有两棵子树,没有子树或者有一棵子树也是可以的。左子树和右子树是有顺序的,次序不能颠倒。
- 满二叉树特征:叶子只能出现在最下一层/非叶子结点的度一定是2/在同样深度的二叉树中,满二叉树的结点个数一定的最多的,同时叶子也是最多的。
- 完全二叉树定义:是满二叉树的子树
- 特点:叶子结点只能出现在最下两层/
- 最下层的叶子一定集中在左部连续位置/
- 倒数第二层,若有叶子结点,一定都在右部连续位置/
- 如果结点度为1,则该结点只有左孩子/同样结点树的二叉树,完全二叉树的深度最小。
注意:满二叉树一定是完全二叉树,但是完全二叉树不一定是满二叉树。
- 二叉树的性质
- 二叉树的第i层至多有2^(i-1)个结点(i>=1)
- 深度为k的二叉树至多有2^k-1个结点(k>=1)
- 对于任何一棵二叉树T,如果其终端节点个数为n0,度为2的结点数为n2,则n0=n2+1
- 具有n个结点的完全二叉树的深度为【log_2 n】+1,取下限
- 二叉树的顺序存储结构
链式存储结构(常用)----二叉链表
- 二叉树的遍历
- 定义:指从根节点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。
- 遍历方式(4种)根据根节点的位置
- 前序遍历:根-左-右
- 中序遍历:左-根-右
- 后序遍历:左-右-根
- 层序遍历:从上至下,逐层遍历,从左至右。
- 线索二叉树:(中序遍历)
二叉树添加了直接指向节点的前驱和后继的指针的二叉树称为线索二叉树。
- 树、森林、二叉树
总结:
- 树与森林的遍历
树:
- 先根遍历:先访问树的根节点,然后再依次先根遍历根的每棵子树。
- 后根遍历:先依次遍历每棵子树,然后再访问根节点。
森林:
- 前序遍历:按照先根遍历依次访问森林的每一棵树
- 后序遍历:按照后根遍历依次访问森林的每一棵树
♥☺十、第十节 赫夫曼树和赫夫曼编码
- 赫夫曼树
WPL值越小,说明构造出来的二叉树性能越优,当WPL最小时候构造的就是最优的赫夫曼树。
构造过程: