数据结构与算法 第三章 树


要点
定义和算法的递归性
特殊的树:完全二叉树、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 哈夫曼编码

哈夫曼编码和译码的原理及实现方法
在这里插入图片描述

在这里插入图片描述
前缀编码:任一字符的编码都不是另一个字符的编码的前缀
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


传送门

上一章:数据结构与算法 第二章 线性表
下一章:数据结构与算法 第四章 图

猜你喜欢

转载自blog.csdn.net/RTyinying/article/details/111935130