文章目录
要点
定义和算法的递归性
特殊的树:完全二叉树、BST、AVL树、堆
二叉树的遍历-4种
如何恢复二叉树
二叉树的存储
树的存储、树与二叉树的转换
应用:哈夫曼树
学习目标
- 树型结构是一种非线性结构,反映了结点之间的层次关系,在计算机科学与软件工程中有着广泛的应用。
- 掌握树(森林)和二叉树的定义及其相关的术语 ;
- 重点掌握二叉树的结构、性质,存储表示和四种遍历算法;二叉树线索化的实质及线索化的过程;
- 了解树的结构性质、存储表示方法和遍历算法;
- 掌握森林(树)与二叉树的对应关系和相互转换方法;
- 了解树型结构的应用,重点掌握哈夫曼树的概念和构造方法,哈夫曼编码和译码的原理及实现方法。
知识点结构
1 树与二叉树的基本术语
定义
树的逻辑结构特点:除根结点之外,每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个直接后继,即一对多的关系,反映了结点之间的层次关系。
树型结构和线性结构的比较
2 二叉树
二叉树的定义
结构特点
2.1 特殊二叉树
2.2 二叉树的性质
2.3 二叉树的遍历
定义
二叉树的恢复算法
2.4 二叉树的基本操作
2.5 二叉树的存储结构
顺序存储结构
完全(满)二叉树
一般二叉树
左右链存储结构–动态二叉链表
存储结构
2.6 二叉树的遍历算法
递归
二叉树的遍历算法应用
2.7 二叉树的其他链式存储结构
动态三叉链表:在二叉链表的基础上增加了一个指向双亲的指针域。
静态二叉链表和三叉链表
2.8 二叉树的复制
相同结构
相似二叉树
等价二叉树
2.9 二叉树的计数
3 堆
定义
堆是完全二叉树
存储结构
基本操作
4 树
树的遍历:从左到右的顺序遍历根结点的每一棵子树
树的存储结构:
1)双亲表示法
2)孩子链表表示法(领接表)
3)双亲孩子表示法
4)二叉链表表示法(孩子兄弟表示法)
5 森林(树)与二叉树的相互转换
森林( 树)转换成二叉树
二叉树转换成森林(树)
森林(树)与二叉树之间的对应关系
森林(树)转换成二叉树的递归算法
二叉树转换成森林(树) 的递归算法
非空森林的基本遍历
6 树的应用
6.1 哈夫曼树定义与原理
路径长度:从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称为路径长度
树的路径长度:从树根到每一结点的路径长度之和
结点的带权的路径长度:从该结点到树根之间的路径长度与结点上权的乘积
树的带权路径长度:树中所有叶子结点的带权路径长度之和
假设有n个权值{w1,w2,…,wn},构造一棵有n个叶子结点的二叉树,每个叶子结点带权wk,每个叶子结点的路径长度为lk,我们将带权路径长度WPL最小的二叉树称作哈夫曼树(最优二叉树)。
哈夫曼树的特点:
权值越大的叶子结点越靠近根节点,权值越小的叶子结点越远离根节点 (构造哈夫曼树的核心思想)
6.2 构造哈夫曼树
6.3 哈夫曼编码
哈夫曼编码和译码的原理及实现方法
前缀编码:任一字符的编码都不是另一个字符的编码的前缀
传送门
上一章:数据结构与算法 第二章 线性表
下一章:数据结构与算法 第四章 图