- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第6章 二叉树和树
A B C D E H F G φ φ φ φ φ φ φ φ φ ① ③ ④ ② 例6.7:按自上而下自左至右的次序输入双亲-孩子的有序对(‘#’,‘A’), (‘A’, ‘B’), (‘A’,‘C’), (‘A’,‘D’), (‘C’, ‘E’), (‘D’, ‘F’), (‘D’,‘G’), (‘E’,‘H’), (‘#’,‘#’),建立树的二叉链表。输入时,以一对‘#’字符作为结束标志,根结点的双亲空,亦以‘#’ 表示之。 按层次遍历的顺序来建立孩子-兄弟链表,即先建根结点,再建第二层,同时建立根与孩子结点间的链接关系…依次类推。结点输入顺序为“先到先建”,用队列作辅助工具,即按照结点生成的先后顺序,将已建好的结点“指 针”入队列。 void CreateTree( CSTree T ) // 算法6.13 { T = NULL; for( cinfach; ch!=#; cinfach) { p = new CSNode; p-data = ch; p-firstchild=p-nextsibling= NULL; // 创建结点,指针域暂且先赋空 EnQueue(Q, p); // 指针入队列 if (fa == #) T = p; // 所建结点为根 else { GetHead(Q,s); // 取队列头元素(指针值) while (s-data != fa ) { DeQueue(Q,s); GetHead(Q,s); } // 查询双亲结点 if (!(s-firstchild)) { s-firstchild = p; r = p; } // 链接第一个孩子结点 else { r-nextsibling = p; r = p; } // 链接其它孩子结点 } //else }} //CreateTree (A,B), (A,C),(A,D),(B,E),(D,F),(D,G),? (A,B) A ? ? a ? B ? ? b front rear C ? ? c ? ? ? E ? ? e D d ? ? ? F f ? ? a rear b rear c rear d rear e rear front f rear front front (A,C) (A,D) (B,E) (D,F) 队列 r r r r r r r r r (#,A) 树结构和线性结构的比较 线性结构 树结构 第一个数据元素 根结点(只有一个) 无前驱 无双亲 最后一个数据元素 叶子结点(可以有多个) 无后继 无孩子 其它数据元素 其它结点 一个前驱,一个后继 一个双亲,多个孩子 一对一 一对多 补充习题: 21.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里我们把由树转化得到的二叉树叫做这棵树对应的二叉树。那么以下结论中,( )是正确的。 A)树的先根遍历序列与其对应的二叉树的先序遍历序列相同 B)树的后根遍历序列与其对应的二叉树的后序遍历序列相同 C)树的先根遍历序列与其对应的二叉树的中序遍历序列相同 D)以上都不对 22.若由森林转化得到的二叉树是非空的二叉树,则二叉树形状是( ) A)根结点无右子树的二叉树 B)根结点无左子树的二叉树 C)根结点可能有左二叉树和右二叉树 D)各结点只有一个儿子的二叉树 21.A 22.C 知识小结: 1.树和森林的定义及相关概念 2.树的三种存储结构及其特点(双亲表示法、孩子链表表示法、孩子-兄弟二叉链表) 3.树和森林与二叉树的转换方法 4.树和森林的遍历及与二叉树遍历的比较 5.层次遍历建立孩子--兄弟链表 6.先根遍历求根到叶子结点的路径 7.类后序遍历求森林的深度 6.4 树的应用 6.4.1 堆排序(heap sort)的实现 1. 堆的定义:堆是满足下列性质的数列{r1, r2, r3 ……rn }: 则r1必是数列中最小值或最大值,称作小顶堆或大顶堆。 ri r2i r2i+1 可以把堆看成
文档评论(0)