数据结构-第七章 树

第七章 树

二叉树

1、性质

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、遍历算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、遍历算法的应用

1. 建立二叉树
①由带空指针标记的先序序列构造二叉树

在这里插入图片描述
在这里插入图片描述

②由先序序列和中序序列构造二叉树

由先序、后序两个遍历序列无法确定唯一的二叉树
在这里插入图片描述
在这里插入图片描述

2、计算二叉树中的结点个数

在这里插入图片描述

3、计算二叉树的高度

在这里插入图片描述

4、根据关键值查找结点

在这里插入图片描述

5、查找父结点

在这里插入图片描述

线索二叉树

1、定义

线索二叉树的存在是为了实现遍历序列中快速查找结点的前驱、后继,让结点中的指针指向结点在遍历序列中的前驱、后继。
在这里插入图片描述
在这里插入图片描述

2、分类

根据遍历顺序的不同,分为以下四种:
(1)先序线索二叉树
(2)中序线索二叉树
(3)后序线索二叉树
(4)层次线索二叉树
举例:中序线索二叉树

树的存储与操作

1、树的存储结构

实现树的存储的关键是:如何表示树中结点之间的逻辑关系
存储问题的出发点:如何表示结点的双亲和孩子。
表示方法如下:

①双亲表示法

以一组连续空间存储树的结点,在每个结点中设一个指示器指示双亲结点的位置。
在这里插入图片描述

②多叉链表表示法

二叉树的二叉链表结构采用了两个指针域存储结点可能有的孩子指针。树的多查链表表示法延伸了这种结构设计:若树的度为K,则在结点结构中设置K个孩子指针域,使所有结点同构。
在这里插入图片描述

③孩子链表表示法

每个结点的孩子以单链表的形式存储,n个结点有n个孩子链表,n个头指针又组成一个线性表,并以顺序存储结构存储。
在这里插入图片描述

④孩子兄弟表示法

以二叉链表作为树的存储结构,链表中的结点的两个指针分别指向该节点的第一个孩子结点和下一个兄弟结点。
在这里插入图片描述

2、树的构造

树转为二叉树
在这里插入图片描述
在这里插入图片描述
这里:1、树的先根遍历等价于其对应二叉树的先序遍历
2、树的后根遍历等价于其对应二叉树的中序遍历

3、Huffman树

Huffman树:给定一组确定权值的叶子结点,带权路径长度最小的二叉树。

①特点

权值越大的叶子节点越靠近根节点,而权值越小的叶子节点越远离根节点;
只有度为0(叶子结点)和度为2的(分支结点)的结点,不存在度为1的结点。

②构造

在这里插入图片描述
先取两个最小权值结点(2和4),权值相加得到新的权值结点(6),把新结点放入原先的权值队列中,再取出两个最小的权值结点(5和6),得到新结点(11),以此类推。

③Huffman编码

如上图,在构造好的Huffman树上 ,在路径上标记0和1(假设左孩子的那条边为0,右孩子的那条边为1,也可相反),便可进行Huffman编码。得到以上图中的编码方案。

总结

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值