数据结构05树幻灯片.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
A B D E G H C F 二叉树BT A B D E G H ^ ^ ^ ^ ^ C ^ F ^ ^ ^ 二叉链表 BT A B D E G C H ^ ^ ^ ^ ^ ^ ^ ^ ^ F 带父指针的二叉链表 5.2.4二叉树的遍历 二叉树的特点 :由根、左子树和右子树3部分组成 依次遍历二叉树中的三个组成部分,便是遍历了整个二叉树 根结点 左子树 右子树 遍历方案: 假设:L:遍历左子树 D:访问根结点 R:遍历右子树 则遍历整个二叉树方案共有: DLR、LDR、LRD、DRL、RDL、RLD 六种。 若规定先左后右,则只有前三种情况: DLR —— 先(根)序遍历 LDR —— 中(根)序遍历 LRD —— 后(根)序遍历 根结点 左子树 右子树 访问根结点 → 遍历左子树 → 遍历右子树 遍历左子树 → 访问根结点 → 遍历右子树 遍历左子树 → 遍历右子树 → 访问根结点 A B D E G H C F 二叉树BT 中序遍历的顺序为:DGBEACHF 先序遍历的顺序为:ABDGECFH 后序遍历的顺序为:GDEBHFCA 2.二叉树的中序遍历算法 A B D E G H C F 二叉树BT BT A tp tp B tp D D tp G tp=∧ tp=∧ G tp=∧ B tp E void LDRTRAVEL(BTNODE *BT){ PSTACK BS; BS = INISTACK(); BTNODE *tp; tp=BT; while(1) { if(tp!=NULL){ BS = PUSSTACK(BS,tp); tp=tp-llink; } else{if(!EMPSTACK(BS)){ tp = GETSTACK(BS); BS = POPSTACK(BS); printf(%d ,tp-data); tp=tp-rlink;} else break; } } } E A C H F 3.二叉树遍历的应用 已知一个二叉树的中根遍历序列为DBEAGHFC,后根遍历序列为DEBHGFCA。要求画出这个二叉树。 5.3树的常见应用 5.3.1哈夫曼树 2.路径长度 4.结点的权 3.树的路径长度 5.结点带权路径长度 6.树带权路径长度 1.路径 什么是哈夫曼树 首先学习几个相关的概念 (a) 从 A 到 B, C, D, E, F, G, H,的路径长度分别为1, 1, 2, 2, 3, 4, 4 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 路径长度:路径上的分支数。 树的路径长度:从树根到所有结点的路径长度之和。 路径长度(a)=0+1+1+2+2+3+4+4=17 完全二叉树是路径长度最短的二叉树 A B D E F C H G 权:是附加在树的结点上的一个实数,以表示某种意义 结点带权路径长度:从根结点到该结点之间的路径长度与该结点的权的乘积。 树的带权路径长度:树中所有叶子结点的带权路径长度之和,记作:WPL WPL=23 WPL=1×2+2×2+3×2+4×2 =22 E C H G 1 2 3 5 G H C E 1 2 3 5 带权路径长度WPL有最小值的二叉树称为哈夫曼树,又称最优二叉树。 E C H G 1 2 3 5 WPL=20 满二叉树不一定是哈夫曼树 哈夫曼树中权越大的叶子离根越近 具有相同带权结点的哈夫曼树不惟一 2.哈夫曼算法 例:有4 个结点 T1 , T2 ,T3 ,T4 ,权值分别为 1, 2, 3, 5,构造哈夫曼树 5.3树的常见应用 5.3.2 判定树 用一个二叉树表示这个判定过程,称为判定树。 椭圆形结点表示比较,圆形表示等级,Y表示比较结果为真,N表示比较结果为假。如: 5.3树的常见应用 5.3.3二叉排序树 这是基于二叉树的一种排序方法。 算法思路 : 以二叉链表为存储结构存储二叉排序树,设为EST;待排序数列存储为一维数组,设为SL。创建二叉排序树时,先把数列的第1个数创建为树的根。此后,

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档