:树及其应用.PPTVIP

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
:树及其应用

Type bitrpetr=↑bnode; {结点指针类型} benode=record {结点类型} data:datatype; {值域} lch,rch:bitreptr;{左指针域和右指针域} end; Var bt: bitreptr; {头指针} 例如用下图(b)所示的二叉链表存储二叉树(下图(a)) 六、二叉树的遍历(访问) 所谓二叉树的遍历是指按照一定的规律不重复地访问二叉树中的每一个结点。 如果用L、D、R分别表示遍历左子树、访问根结点、遍历右子树,则对二叉树的遍历可以有下列六种(3!=6)组合: LDR、 LRD、 DLR、 DRL、RDL、 RLD 若再限定先左后右的次序,则只剩下三种组合 DLR、LDR、 LRD 这三种遍历规则分别称为先(前)序遍历、中序遍历和后序遍历(以根为标准)。 ⑴、前(根)序遍历 前序遍历的规则如下: 若二叉树为空,则退出。否则 ⑴访问处理根结点; ⑵前序遍历左子树; ⑶前序遍历右子树; a b d e h i c f g ⑵中序遍历 中序遍历的规则如下: 若二叉树为空,则退出;否则 ⑴中序遍历左子树; ⑵访问处理根结点; ⑶中序遍历右子树; 若中序遍历上图中的二叉树,可以得到如下的中序序列: d b h e i a f c g ⑶后序遍历 后序遍历的规则如下: 若二叉树为空,则退出;否则 ⑴后序遍历左子树; ⑵后序遍历右子树; ⑶访问处理根结点; 若后序遍历上图中的二叉树,可以得到如下的后序序列 d h i e b f g c a 1、将一棵有100个结点的完全二叉树从根结点这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子的编号为[ ] A 98 B 99 C 97 D 50 2、对二叉树从1进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的 编号,则可以采取[ ]次序的遍历方法。 A 先序 B中序 C后序 D从根开始的层次遍历 3、有n个结点并且其高度为n的二叉树的数目是[ ] A、n B、 2n C、 2n-1 D、 2(n-1) 4.写出二叉树三种序遍历结果 1、编程实现:二叉树的遍历(tree1.pas) 建立二叉树,然后实现:输出先序遍历、中序遍历、后序遍历的结果。 输入: 第一行:结点个数n。 以下行:每行3个数,第一个是父亲,后两个依次为左右孩子,0表示空。 输出:根、先中后序遍历结果。 样例输入: 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 treetype=record {结点} father:integer;{父亲} lch,rch:integer;{lch:左孩子;rch:右孩子} end; var tree:array[1..maxn] of treetype; n,m,t:integer; procedure init; var f,l,r,i:integer; begin readln(n); for i:=1 to n do begin readln(f,l,r); tree[f].lch:=l; tree[f].rch:=r; if l0 then tree[l].father:=f; if r0 then tree[r].father:=f; end; end; function root:integer; var i:integer; begin for i:=1 to n do if tree[i].father=0 then begin root:=i; exit; end; end; 方法: 数组顺序存储结构 pr

您可能关注的文档

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档