- 1、本文档共79页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
十:树及其应用
Const m=树中结点数上限; Type node=record {结点类型} data:datatype; {数据值} prt,lch,rch:integer; {父结点、左儿子、右儿子编号} end; treetype=array[1‥m] of node; {二叉树的顺序表类型} Var Tree:treetype; {二叉树} 2、链式存储结构 动态数据结构(指针)。由于二叉树中每个结点通常包括数据元素和两个分支。因此二叉树对应的二重链表中每个结点应有三个域: ⑴值域: data ⑵左指针域: lch ⑶右指针域: rch 这种链表也称为二叉链表。二叉链表头指针bt指向二叉树的根结点 例如用下图(b)所示的二叉链表存储二叉树(下图(a)) Type bitrpetr=↑bnode; {结点指针类型} benode=record {结点类型} data:datatype; {值域} lch,rch:bitreptr; {左指针域和右指针域} end; Var bt: bitreptr; {头指针} 三、二叉树的遍历(访问) 所谓二叉树的遍历是指按照一定的规律不重复地访问二叉树中的每一个结点。 如果用L、D、R分别表示遍历左子树、访问根结点、遍历右子树,则对二叉树的遍历可以有下列六种(3!=6)组合: LDR、 LRD、 DLR、 DRL、RDL、 RLD 若再限定先左后右的次序,则只剩下三种组合 DLR、LDR、 LRD 这三种遍历规则分别称为先(前)序遍历、中序遍历和后序遍历(以根为标准)。 1、前(根)序遍历: DLR 前序遍历的规则如下: 若二叉树为空,则退出。否则 ⑴访问处理根结点; ⑵前序遍历左子树; ⑶前序遍历右子树; a b d e h i c f g 2、中序遍历: LDR 中序遍历的规则如下: 若二叉树为空,则退出;否则 ⑴中序遍历左子树; ⑵访问处理根结点; ⑶中序遍历右子树; 若中序遍历上图中的二叉树,可以得到如下的中序序列: d b h e i a f c g 3、后序遍历: LRD 后序遍历的规则如下: 若二叉树为空,则退出;否则 ⑴后序遍历左子树; ⑵后序遍历右子树; ⑶访问处理根结点; 若后序遍历上图中的二叉树,可以得到如下的后序序列 d h i e b f g c a 2)、写出二叉树后序遍历序列 1)、对二叉树从1进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的 编号,则可以采取[ ]次序的遍历方法。 A 先序 B中序 C后序 D从根开始的层次 1、编程实现:二叉树的遍历(tree1.pas) 建立二叉树,然后实现:输出先序遍历、中序遍历、后序遍历的结果。 输入: 第一行:结点个数n。 以下行:每行3个数,第一个是父亲,后两个依次为左右孩子。 输出:根、先中后序遍历结果。 样例输入: 8 1 2 4 2 0 0 4 8 0 3 1 5 5 6 0 6 0 7 8 0 0 7 0 0 样例输出: 3 3 1 2 4 8 5 6 7 2 1 8 4 3 6 7 5 2 8 4 1 7 6 5 3 const maxn=100; type
文档评论(0)