树的概念和定义试卷.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
当i=j+1时,根据完全二叉树的定义, 若其左孩子存在, 则其左孩子结点的序号一定等于序号为j的结点的右孩子的序号加1, 即其左孩子结点的序号等于 (2×j+1)+1=2(j+1)=2×i, 且有2×i≤n;如果2×in, 则左孩子不存在。 若右孩子结点存在,则其右孩子结点的序号应等于其左孩子结点的序号加1,即右孩子结点的序号为2×i+1,且有2×i+1≤n;如果2×i+1n,则右孩子不存在。 故(2)和(3)得证。 由(2)和(3)我们可以很容易证明(1)。 当i=1时, 显然该结点为根结点,无双亲结点。当i1时,设序号为i的结点的双亲结点的序号为m,如果序号为i的结点是其双亲结点的左孩子,根据(2)有i=2×m,即m=i/2; 如果序号为i的结点是其双亲结点的右孩子,根据(3)有i=2×m+1, 即m=(i-1)/2=i/2-1/2,综合这两种情况,可以得到,当i1时, 其双亲结点的序号等于[i/2]。证毕。 二叉树的存储结构 二叉树的结构是非线性的, 每一结点最多可有两个后继。  二叉树的存储结构有两种: 顺序存储结构和链式存储结构。 1. 顺序存储结构 图6.4 二叉树与顺序存储结构 图6.5 单支二叉树与其顺序存储结构 2. 链式存储结构 对于任意的二叉树来说,每个结点只有两个孩子,一个双亲结点。我们可以设计每个结点至少包括三个域:数据域、 左孩子域和右孩子: LChild Data RChild 其中,LChild域指向该结点的左孩子,Data域记录该结点的信息,RChild域指向该结点的右孩子。 用C语言可以这样声明二叉树的二叉链表结点的结构: typedef struct Node { DataType data; struct Node *LChild; struct Node *RChild; }BiTNode, *BiTree; 有时,为了便于找到父结点,可以增加一个Parent域, Parent域指向该结点的父结点。 该结点结构如下: LChild Data parent RChild 图6.6 二叉树和二叉链表 若一个二叉树含有n个结点,则它的二叉链表中必含有2n个指针域, 其中必有n+1个空的链域。此结论证明如下: 证明:分支数目B=n-1,即非空的链域有n-1个,故空链域有2n-(n-1)=n+1个。 不同的存储结构实现二叉树的操作也不同。如要找某个结点的父结点,在三叉链表中很容易实现;在二叉链表中则需从根指针出发一一查找。可见,在具体应用中,需要根据二叉树的形态和需要进行的操作来决定二叉树的存储结构。 二叉树的遍历 图6.7 二叉树结点的基本结构 我们用L、D、R分别表示遍历左子树、访问根结点、 遍历右子树, 那么对二叉树的遍历顺序就可以有六种方式: (1) 访问根,遍历左子树,遍历右子树(记做DLR)。 (2) 访问根,遍历右子树,遍历左子树(记做DRL)。 (3) 遍历左子树,访问根,遍历右子树(记做LDR)。 (4) 遍历左子树,遍历右子树,访问根(记做LRD)。 (5) 遍历右子树,访问根,遍历左子树(记做RDL)。 (6) 遍历右子树,遍历左子树,访问根(记做RLD)。 注意:先序、中序、后序遍历是递归定义的, 即在其子树中亦按上述规律进行遍历。 下面就分别介绍三种遍历方法的递归定义。 · 先序遍历(DLR)操作过程: 若二叉树为空,则空操作,否则依次执行如下3个操作: (1) 访问根结点; (2) 按先序遍历左子树; (3) 按先序遍历右子树。 · 中序遍历(LDR)操作过程:  若二叉树为空,则空操作,否则依次执行如下3个操作: (1) 按中序遍历左子树;  (2) 访问根结点;  (3) 按中序遍历右子树。  · 后序遍历(LRD)操作过程:  若二叉树为空,则空操作,否则依次执行如下3个操作: (1) 按后序遍历左子树;  (2) 按后序遍历右子树;  (3) 访问根结点。 先序遍历: A、 B、 D、 F、 G、 C、 E、 H 。 中序遍历: B、 F、 D、 G、 A、 C、 E、 H 。 后序遍历: F、 G、 D、 B、 H、 E、 C、 A 。 图6.8 二叉树 中序遍历二叉树的递归过程 最

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档