Java数据结构与算法解析(四)——树的概述.docx

Java数据结构与算法解析(四)——树的概述.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java数据结构与算法解析(四)――树的概述 树的基本概念 树: 树(Tree)是n (n^O)个结点的有限集。n-0时称为空树,在任意一棵非空 树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n1时,其 余结点可分为m (m0)个互不相交的有限集Tt, Ta.……,匸.其中每一个 集舍本身又是一標树,井且称为根的子树(SubTree)c 树具有以下的特点: (01)每个节点有零个或多个子节点; (02)没有父节点的节点称为根节点; (03)每一个非根节点有且只有一个父节点; (04)除了根节点外,每个子节点可以分为多个不相交的子树。 树的基本术语 1■结点的度 结点拥有的子树数称为结点的度。度为0的结点称为叶子结点或终端结点,度不为 0的结点称为非终端结点或分支结点。 除根结点以外,分支结点也称为内部结点。 树的度是树内各结点的度的最大值。 .垠结点 Qi内部结点 o叶结克或终端结点 Y * 分支结点或驻终站结煖 2■叶子:度为零的结点。 3■分支结点:度不为零的结点。 4■树的度:树中结点的最大的度。 5■层次与深度 结点的层次(3杆el)从根开始定义起,根为第一层,根的孩子为第二层.若某结 点在第I层,则夷子树的根就在第1+1层。其双亲在同一层的结点互为堂兄弟*显然 图6-2-6中的D. F是卓兄弟卜而G. H, L )也是.树中结点的最大层次称为树 的深度(Depth)或高度”当前树的裸度为4. ... f一 深度为4 堂兄弟 !■ I 6■树的高度:树中结点的最大层次。 7■无序树:如果树中结点的各子树之间的次序是不重要的,可以交换位置。 8■有序树:如果树中结点的各子树之间的次序是重要的 ,不可以交换位置。 9■森林:0个或多个不相交的树组成。 对森林加上一个根,森林即成为树;删去根, 树即成为森林。 树的存储结构 1?简单的顺序存储不能满足树的实现 2?结合顺序存储和链式存储来实现 三种表示方法 ? 双亲表示法 ? 孩子表示法 ?孩子兄弟表示法 1■双亲表示法 在每个结点中,附设一个指示器指示其双亲结点到链表中的位置 1 data parent 下标 data parent 0 A -1 1 B 0 2 C 0 3 D 1 l; 4 1 E \2 j 5 F 2 J l[ G 3 7 1 H 3 8 1 3 9 1 ■ ■ ■■ ■尸 1 ■董 L?— 4 2■孩子表示法 1?方案一 2?方案二 GO HO 【0 GO HO 【0 J 0 3?最终方案 把每个结点的孩子结点排列起来,以单链表作为存储结构,则 n个结点有n个孩子 链表,如果是叶子结点则此单链表为空,然后 n个头指针又组成一个线性表,采用 顺序存储结构,存放在一个一维数组中 Ft? dita firslchild chttd ntxi V 二 C D E 、 F A G A H A I A J A 3 A 9 A 2 A I 5 A 8 A 3■孩子兄弟表示法 任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也 是唯一的。因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右 兄弟 [ firstthilE rightsib 二叉树 例子:猜100以内的整数,注意猜的次数不能超过 7个,回答者只回答大了还是小 了 二叉树(Binary Tree )是n ( nO )个结点的初眼集合\该集合 或者为空集(称为空二叉树h或吉由一个樣结点和两標章不相交 的.分别称为根结点的左子樹和右子树的二叉树组成。 1■二叉树的定义 二叉树是每个节点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空 集;根可以有空的左子树或右子树;或者左、右子树皆为空。 各种雄$居心 2■二叉树的性质 性质1:在二叉树的第i层上至多有2(i-1)个结点(i=1 )。 性质2:深度为k的二叉树至多有2(k)-1个结点(k=1 )。 性质3:对任何一颗二叉树T,如果其终端结点数为nO,度为2的结点数为n2,则n0 =n2+1. 性质4:包含n个结点的二叉树的高度至少为log2(n+1)。 性质5:如果对一颗有n个结点的完全二叉树(其深度为[log2n]+1 )的结点按层序编 号(从第1层到第[log2n]+1层,每层从左到右),对任意一个结点 i(1=i=n)有: .如果i=1,则结点i是二叉树的根,无双亲;如果i1,则其双亲是结点[i/2] 2) .如果2in,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点 2i。 3) .如果2i+1n,则结点i无右孩子;否则其右孩子是结点 2i+1。 性质1在二叉树的第i层上至多有2(|-1)个结点(i=1 )。 证明:下面用”数学归纳法”进行证明。 (1)当i=1时,第

文档评论(0)

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

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

1亿VIP精品文档

相关文档