定义
特点
特殊的二叉树
斜树
顾名思义,其中的结点都只有一个,又分为左斜树和右斜树,这时候又有疑惑了,这种数据结构不是有线性表一样吗,没错,线性表是一种特殊的树
满二叉树
完全二叉树
这个定义有点绕,简单来说就是所有的结点必须是有顺序的,不能跳跃存在
二叉树的性质
1.在二叉树的第i层至多有2的(i-1)次方个结点,参考满二叉树
2.深度游k的二叉树至多有2的k次方-1个结点,参考满二叉树
3.任意二叉树,终端结点为n0,度为2的结点为n2,度为1的结点为n1,则n0=n2+1
下面是推倒过程,设连接线为x,总结点数为n,则:
n=n0+n1+n2
x=n1+2n2
x=n-1
求得n0=n2+1
存储结构
二叉树的顺序结构
这有点像广度优先遍历,但这里关注的是存储结构,不是遍历方式,顺序结构一般只用于满二叉树,普通二叉树会有空间浪费,例如(^表示空)
二叉链表
一个数据域,两个指针域分别表示左孩子和右孩子
二叉树的遍历
前序遍历
中序遍历
后序遍历
层序遍历
这四种遍历名称都是针对每一个根结点而言,
前序:先遍历根节点(深度优先遍历)
中序:中间遍历根节点
后序:最后遍历根节点
层序:从根节点一层一层往下遍历(广度优先遍历)
线索二叉树
定义
指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索二叉链表,相应的二叉树就成为思安所二叉树
还需要证明前驱后后继是否为孩子,所以加入了两个标志位,单个结点的结构如下
场景
赫夫曼树及其应用
定义及原理
从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径的长度
例如这两个二叉树
二叉树a中,从根结点到D结点的路径为4,二叉树b中,从根结点到D结点的路径为2
二叉树a的树路径长度为1+1+2+2+3+3+4+4=20
二叉树b的树路径长度为1+1+2+2+2+2+2+3+3=16
如果考虑带权路径,路径与权的乘积才是最终的路径长度
定义
也称为最优二叉树
如何构建赫夫曼树
如何构建赫夫曼树总结
赫夫曼树的应用-赫夫曼编码
定义
数据压缩的原理基于此