数据结构与算法笔记 lesson 22 树与二叉树的转换与赫夫曼树
来源:互联网 发布:java基础看不懂 编辑:程序博客网 时间:2024/06/05 03:00
树到二叉树的转换
加线,在所有兄弟结点之间加一条连线。
去线,对树中每个结点,只保留它与第一个孩子结点的连线,删除它与其他孩子结点之间的连线
层次调整,以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明
森林转换为二叉树
把每棵树转换为二叉树
第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根节点的右孩子,用线连接起来。
二叉树转换为树,森林
把以上步骤反过来
判断一棵二叉树能够转换成一棵树还是森林,标准很简单,那就是只要看这棵二叉树的根结点有没有右孩子,有就是森林,没有就是一棵树
森林的遍历
森林的遍历也分前序遍历和后续遍历,其实就是按照数的先根遍历和后跟遍历依次访问森林的每一棵树
树,森林的前序遍历和二叉树的前序遍历结构相同,树,森林的后序遍历和二叉树的中序遍历结构相同
赫夫曼树
例如学生的考试成绩
if(a<60)printf("不及格")else if(a<70) printf("及格")else if(a<90) printf("良好")else printf("优秀")
在实际情况中,假如各个分数段的比例如下
0~5960~6970~8990~1005%15%70%10%因为良好的人数最多,所以大部分情况需要经过三次判断。为提高效率,可改为
if(a>90) printf("优秀")else if(a>70) printf("良好")else if(a>60) printf("及格")else printf("不及格")
把这两棵二叉树简化成叶子结点带权的二叉树
结点的路径长度:
从根结点到该结点的路径上的连接数。
树的路径长度:
树中每个叶子结点的路径长度之和
结点带权路径长度
结点的路径长度与结点权值的乘积
树的带权路径长度
WPL(Weight Path Length) 是树中所有叶子结点的带权路径长度之和
WPL的值越小,说明构造出来的二叉树性能最优
构造最优二叉树
选出两棵根结点的权值最小的二叉树
合并两棵选出的二叉树,增加一个新结点作为新二叉树的根,权值为左右孩子的权值之和
依次重复以上步骤
0 0
- 数据结构与算法笔记 lesson 22 树与二叉树的转换与赫夫曼树
- 数据结构与算法笔记 lesson 19 二叉树
- 数据结构与算法笔记 lesson 20 二叉树遍历
- 数据结构与算法笔记 lesson 21 线索二叉树
- 数据结构与算法笔记 lesson 18 树
- [数据结构与算法]树、森林与二叉树的转换
- 数据结构与算法笔记 lesson 10 栈 二进制转换十进制
- 数据结构与算法笔记 lesson 9 栈
- 数据结构与算法笔记 lesson 13 队列
- 数据结构与算法笔记 lesson 15 递归
- 数据结构与算法分析笔记与总结(java实现)--二叉树11:二叉树的深度
- 数据结构与算法分析笔记与总结(java实现)--二叉树15:对称的二叉树
- 【数据结构与算法】二叉树
- 数据结构与算法-二叉树
- 算法与数据结构 - 二叉树
- 数据结构与算法:二叉树
- 数据结构与算法:二叉树
- 数据结构与算法-二叉树
- Boost.Log v2 : 5.设计概要
- PAT A1013. 数素数 (20)
- TP-LINK_841N_V8路由器硬改升级OpenWRT记
- AVX2整数向量运算
- 基于Netty3的RPC架构笔记1之NIO
- 数据结构与算法笔记 lesson 22 树与二叉树的转换与赫夫曼树
- web从零学起记录--html1.1-表单
- 1003. 我要通过!(20)
- junit 测试hibernate
- leetcode 7. Reverse Integer \ 8. String to Integer (atoi)
- 祝吴祖基老师100岁
- android源码预置apk
- Qt 之 截图功能进阶(四)截图时显示当前截图信息
- JavaScript物体运动一