数据结构(七)二叉树

定义

 

特点

 

特殊的二叉树

斜树

顾名思义,其中的结点都只有一个,又分为左斜树和右斜树,这时候又有疑惑了,这种数据结构不是有线性表一样吗,没错,线性表是一种特殊的树
 

满二叉树

 

完全二叉树

 
这个定义有点绕,简单来说就是所有的结点必须是有顺序的,不能跳跃存在
 

二叉树的性质

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
如果考虑带权路径,路径与权的乘积才是最终的路径长度

定义

也称为最优二叉树
如何构建赫夫曼树
 
 

如何构建赫夫曼树总结

 

赫夫曼树的应用-赫夫曼编码

定义

数据压缩的原理基于此
原文地址:https://www.cnblogs.com/ulysses-you/p/6999282.html