资源描述:
《第6章+树与二叉树》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章树和二叉树6.1树的定义和基本术语6.2二叉树6.3遍历二叉树和线索二叉树6.4树和森林6.6赫夫曼树及其应用特点:非线性结构,一个直接前驱,但可能有多个直接后继(1:n)16.1树的定义和基本术语1.树的定义2.若干术语3.逻辑结构4.存储结构5.树的运算21.树的定义注1:过去许多书籍中都定义树为n≥1,曾经有“空树不是树”的说法,但现在树的定义已修改。注2:树的定义具有递归性,即树的定义中还有树。树(Tree)是n个(n≥0)结点组成的有限集合T。在任何一棵非空树中:(1)有且仅有一个结点称为根(root);(2)当n>1时,其余的结点可分为m
2、(m>0)个互不相交的有限集合T1,T2,…,Tm。其中,每个集合本身又是一棵树,被称作这个根的子树(SubTree)。3A只有根结点的树ABCDEFGHIJKLM有子树的树根子树4树的抽象数据类型定义(见教材P118-119)ADTTree{数据对象D:数据关系R:基本操作P:}ADTTree若D为空集,则称为空树;//允许n=0若D中仅含一个数据元素,则R为空集;否则R={H},H是如下二元关系:①在D中存在唯一根元素root,在H下无前驱②若D-{root}≠Φ,则存在对D-{root}的一个划分,对任意j≠k,有Dj∩Dk=Φ。且关系H...③对应
3、于D-{root}的划分,H-……有唯一一个划分,对任意j≠k,有Hj∩Hk=Φ。(Di,{Hi})D是具有相同特性的数据元素的集合。//至少有15个5基本操作:查找类插入类删除类6Root(T)//求树的根结点查找类:Value(T,cur_e)//求当前结点的元素值Parent(T,cur_e)//求当前结点的双亲结点LeftChild(T,cur_e)//求当前结点的最左孩子RightSibling(T,cur_e)//求当前结点的右兄弟TreeEmpty(T)//判定树是否为空树TreeDepth(T)//求树的深度TraverseTree(T,V
4、isit())//遍历7InitTree(&T)//初始化置空树插入类:CreateTree(&T,definition)//按定义构造树Assign(T,cur_e,value)//给当前结点赋值InsertChild(&T,&p,i,c)//将以c为根的树插入为结点p的第i棵子树8ClearTree(&T)//将树清空删除类:DestroyTree(&T)//销毁树的结构DeleteChild(&T,&p,i)//删除结点p的第i棵子树9树的表示法有几种:图形表示法嵌套集合表示法广义表表示法凹入表示法左孩子-右兄弟表示法这些表示法的示意图参见教材P12
5、0图6.210广义表表示法(A(B(E(K,L),F),C(G),D(H(M),I,J)))根作为由子树森林组成的表的名字写在表的左边11左孩子-右兄弟表示法ABCDEFGHIJKLM数据左孩子右兄弟(A(B(E(K,L),F),C(G),D(H(M),I,J)))122.若干术语——即上层的那个结点(直接前驱)——即下层结点的子树的根(直接后继)——同一双亲下的同层结点(孩子之间互称兄弟)——即双亲位于同一层的结点(但并非同一双亲)——即从根到该结点所经分支的所有结点——即该结点下层子树中的任一结点ABCGEIDHFJMLK根叶子森林有序树无序树——即根
6、结点(没有前驱)——即终端结点(没有后继)——指m棵不相交的树的集合(例如删除A后的子树个数)双亲孩子兄弟堂兄弟祖先子孙——结点各子树从左至右有序,不能互换(左为第一)——结点各子树可互换位置。132.若干术语(续)——即树的数据元素及其分支——结点挂接的子树数(有几个直接后继就是几度。)结点结点的度结点的层次终端结点分支结点树的度树的深度(或高度)ABCGEIDHFJMLK——从根到该结点的层数(根结点算第一层)——即度为0的结点,即叶子——即度不为0的结点(也称为内部结点)——所有结点度中的最大值(Max{各结点的度})——指所有结点中最大的层数(Ma
7、x{各结点的层次})问:右上图中的结点数=;树的度=;树的深度=133414ABCDEFGHIJKLM结点A的度:3结点B的度:2结点M的度:0叶子:K,L,F,G,M,I,J结点A的孩子:B,C,D结点B的孩子:E,F结点I的双亲:D结点L的双亲:E结点B,C,D为兄弟结点K,L为兄弟树的度:3结点A的层次:1结点M的层次:4树的深度:4结点F,G为堂兄弟结点A是结点F,G的祖先153.树的逻辑结构(特点):一对多(1:n),有多个直接后继(如家谱树、目录树等等),但只有一个根结点,且子树之间互不相交。4.树的存储结构讨论1:树是非线性结构,该怎样存储?
8、————仍然有顺序存储、链式存储等方式。16讨论3:树的链式存储方