1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
07第7章树

第7章 树 树的定义及基本操作 二叉树 线索二叉树 树、森林和二叉树 哈夫曼树及其应用 树的定义 树:包含n(n0)个节点的有穷集合K,且在K中定义了一个关系N,N满足以下条件: 有且仅有一个结点K0,它对于关系N来说没有前驱,称K0为树的根结点。 除K0外,K中的每个结点对于关系N来说有且仅有一个前驱。 K中各结点对关系N来说可以有m个后继(m≥0)。 子树:若n1,除根结点之外的其余数据元素被分为m(m0)个互不相交的集合T1, T2,….. Tm,其中每一个集合Ti (1≤i≤m)本身又是一棵树;树T1, T2,…..,Tm称作根结点的子树。 实例: 树的特点: 树的根结点没有前驱结点,且除了根结点之外的所有结点有且只有一个前驱结点。 树结点可以有零个或多个后继结点。 树的表示形式 树的表示方法: 直观表示法: 形式化表示法: (A(B(E(K,L),F(L)),C(G),D(H,I(M(N))))) 凹入表示法: 树的常用术语 树的结点:包含一个数据元素及若干指向其子树的分支。 结点的度:结点所拥有的子树的个数称为该结点的度。 叶子:度为0的结点。 非终端结点:度不为0的结点。 孩子:结点的子树的根称为该结点的孩子。 兄弟:同一个双亲的孩子之间互称兄弟。 结点的祖先:是从根到该结点所经分支上的所有结点。 子孙:以某结点为根的子树中的任意结点都称为该结点的子孙。 层次性:从根开始定义起,根为第一层,根的孩子为第二层;某结点在第L层,则其子树的根就在第L+1层。 树的深度:树中各结点层次的最大值称作该树的深度。有序树:将树中结点的各子树看成从左向右是有次序的则称该树为有序树。 森林:是m(m≥0)棵互不相交的树构成的有限集合;即F={T1,T2,?Tm},其中,Ti(i=1,2, ?m)是树,当m=0时,F是空森林。对树中每个结点而言,其子树的集合即为森林。反之,若给森林F={T1,T2,?Tm}中的每棵树的根结点都赋予同一个双亲结点,则就构成一棵树。 树的基本操作 树的基本操作: Initiate(t):初始化一棵树t。 Root(x):求结点x所在树的根结点。 Parent(t,x):求树t中结点x的双亲结点。 Child(t,x,i):求树t中结点x的第i个孩子结点。 Insert(t,x,i,s):把以s为结点的树插入到树t中作为结点x的第i棵子树。 Delete(t,x,i):在树t中删除结点x的第i棵子树。 Tranverse(t):按某种方式访问树t中的每个结点,且使每个结点只被访问一次。 二叉树 二叉树:T是n(n≥0) 个有限元素的集合,这个集合或者是空集,或者是由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树组成。即当T??时,T满足以下条件: 存在唯一的数据元素r?T,且r在T中没有直接前驱,称为根结点。 若T-{r}??,则T-{r}存在划分T1,T2:T1?T2=T-{r},T1?T2=?,且T1,T2均为二叉树,并命名T1是T的左子树,T2是T的右子树。 实例: 二叉树的基本形态: 特殊二叉树 满二叉树:一棵深度为k且有2k-1个结点的二叉树。 完全二叉树:深度为k,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应。 二叉树的性质 性质1:在二叉树的第 i层上至多有2 i–1个结点(i≥1。) 性质2:深度为k的二叉树至多有2k -1个结点(k≥1)。 性质3:对任何一棵二叉树T,如其叶子结点数为n0,度为2的结点数为n2,则n0= n2+1。 性质4:具有n个结点的完全二叉树的深度为「log2n」+1。 性质5:如果对一棵有n个结点的完全二叉树的结点按层编号,则对任一结点i(1≤i≤n)有: 如果i=1,结点i是根结点,无双亲;如果i>1,则其双亲结点的编号i/2。 如果2in,则结点i无左孩子,为叶子结点;否则其左孩子是结点2i。 如果2i+1n,则结点i无右孩子;否则其右孩子结点2i+1。 二叉树的存储结构 顺序存储结构: 概念:把二叉树的所有结点,按照一定的次序顺序,存储到一片连续的存储单元中。 完全二叉树的结点编号与线性序列的关系:编号为i的结点是Ti(1≤i≤n),则有: i1,则Ti的双亲编号为 i/2;若i=1,则Ti为根结点。 若2i≤n,则Ti的左孩子的编号是2i;否则,Ti无左孩子。 若2i+1≤n,则Ti的右孩子的编号是2i+1;否则,Ti无右孩子。 若i为奇数且不为1,则Ti的左兄弟的编号为i-1;否则,Ti没有左兄弟。 若i为偶数且小于n,则Ti的右兄弟的编号为i+1;否则,Ti没有右兄弟。 二叉树顺序存储

文档评论(0)

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

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

1亿VIP精品文档

相关文档