数据结构 树、森林、二叉树、哈夫曼树
7.7、二叉树、树、森林
定义树可以使用,孩子兄弟表示法,做指针表示孩子,右指针表示树
typedef struct CSNode{ ElemType data; struct CSNode *firstchilde,*nextsibling;//第一个为孩子,第二个为兄弟 }CSNOde,*CSTree;
二叉树和树的转换
二叉树和森林的转换
先根遍历
树的先根遍历和对应孩子兄弟二叉树的先序遍历是相同的
图035:
先根遍历:A B D E C F G H I
对应二叉树的先序遍历:A B D E C F G H I
后根遍历
树的后根遍历和对应孩子兄弟二叉树的中序遍历是相同的
图035:
后根遍历:D B E F C H G I A
对应二叉树的中序遍历:D B E F C H G I A
层次遍历
图035:
层次遍历:A B E C G I D F H
先根遍历和后根遍历:称为深度优先遍历
层次遍历:称为广度优先遍历
树 | 森林 | 孩子兄弟二叉树 |
---|---|---|
先根遍历 | 先序遍历 | 先序遍历 |
后根遍历 | 中序遍历 | 中序遍历 |
森林的先序遍历:每颗树的先根遍历 组合起来(或者转化为孩子兄弟二叉树的先序遍历)
森林的中序遍历:每颗树的后根遍历 组合起来(或者转化外孩子兄弟二叉树的中序遍历)
7.10、哈夫曼树
结点的权:有某种现实含义的数值(如:表示结点的重要性等)
结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点的权值的乘积
树的带权路径长度:树中所有叶结点的带权路径长度之和(WPL,Weighted Path Length)
在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称为最优二叉树
哈夫曼编码例题:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)