数据结构树南京工程学院通信工程学院.pptxVIP

  • 4
  • 0
  • 约1.51万字
  • 约 94页
  • 2020-05-29 发布于上海
  • 举报

数据结构树南京工程学院通信工程学院.pptx

第六章 树和二叉树 前面我们学习的线性数据结构,每个元素都有唯一的前驱(第一个除外)和后继(最后一个除外),但是在现实应用中,一些问题的数据元素之间的关系就不这样简单,例如在编译程序中,用树表示源程序的语法结构。 本章学习一种非线性数据结构——树,数据元素之间是一种层次关系,元素有且只有一个前驱,但可以有多个后继。第六章 树和二叉树树的概念和基本术语二叉树 二叉树遍历线索二叉树树与森林霍夫曼树 6.1树的概念和基本术语树的定义 树是由 n (n ? 0) 个结点的有限集合。如果 n = 0,称为空树;如果 n 0,则 有且仅有一个特定的称之为根(Root)的结点,它只有直接后继,但没有直接前驱; 当n 1,除根以外的其它结点划分为 m (m 0) 个互不相交的有限集 T1, T2 ,…, Tm,其中每个集合本身又是一棵树,并且称为根的子树(SubTree)。ABCDEFGHIJKLM例如A只有根结点的树有13个结点的树其中:A是根,其余结点分成三个互不相交的子集,T1={B,E,F,K,L}; T2={C,G}; T3={D,H,I,J,M},T1,T2,T3都是根A的子树,且本身也是一棵树树的基本术语 树的结点:包含一个数据元素及若干指向子树的分支; 孩子结点:结点的子树的根称为该结点的孩子 双亲结点:B结点是A结点的孩子,则A结点是B结点的双亲;ABCDEFGHIJKLM兄弟结点:同一双亲的孩子结点;堂兄结点:双亲在同一层的结点互为堂兄弟。结点的层次:根结点的层定义为1;根的孩子为第二层结点,依此类推;ABCDEFGHIJKLM 树的高度:树中结点的最大层次.结点的度:结点子树的个数树的度: 树内各结点的度的最大值。叶子结点:也叫终端结点,是度为0的结点;分枝结点:度不为0的结点;有序树:子树有序的树,(子树不能互换)如:家族树;无序树:不考虑子树的顺序;rootBCDEFGHIJKLM森林:FA是m(m≥0)棵互不相交的树的集合任何一棵非空树是一个二元组 Tree = (root,F)其中:root 被称为根结点, F 被称为子树森林ABCDEFGHIJKLM路径:树中的k 个结点n1,n2,… ,nk,满足ni 是ni + 1 的双亲,n1到nk有一条路径路径长度:分支数=路径上结点个数一1根没有双亲,叶子没有孩子;vi是vj 的双亲,则L ( vi ) = L(vj)- 1 ; 堂兄弟的双亲是兄弟关系吗?有序树和无序树的区别;注意对比树型结构和线性结构的结构特点树型结构线性结构 根结点 (无前驱)第一个数据元素 (无前驱)最后一个数据元素 (无后继)多个叶子结点 (无后继)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~其它数据元素(一个前驱、 一个后继)其它数据元素(一个前驱、 多个后继)树的常见表示方法1.直观表示法:用圆圈表示结点,元素写在圆圈中,连线表示元素之间的关系.根在上,叶子在下(即树向下生长)2 、集合表示法:根据树的集合定义,写出集合划分。 3 、文氏图表示法:集合表示的一种直观表示,用图表示集合。4 、目录表示法:将一棵树描述为一本书,书--章--节--小节5 、广义表表示法:将一棵树描述为一个广义表,子树就对应子表。人们最常用的是第一种,但是不适合计算机!基本操作 InitTree(&T); 操作结果:构造空树T。 DestroyTree(&T); 初始条件:树T存在。 操作结果:销毁树T。CreateTree(&T,definition) 初始条件:definition给出树T的定义。 操作结果:按definition构造树T。 ClearTree(&T); 初始条件:树T存在。 操作结果:将树T清为空树。 TreeEmpty(T) 初始条件:树T存在。 操作结果:若T为空树,则返回ture,否则false。TreeDepth(T) 初始条件:树T存在。 操作结果:返回T的深度。Root(T) 初始条件:树T存在。 操作结果:返回T的根。 Value(T, Cur_e) 初始条件:树T存在,cur_e是T中某 个结点。 操作结果:返回cur_e的值。Assign(T,cur_e,value) 初始条件:树T存在,cur_e是T中某个结点。 操作结果:结点cur_e赋值 为value。 Parent(T,cur_e) 初始条件:树T存在,cur_e是T中某个结点。 操作结果:若cur_e是T的非根结点,则返回它的双亲,否则函数值为“空”。 Rightsibling(T,cur_e) 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e有右兄弟,则返回它的右兄弟,否则函数值为“空”。 LeftChild(T,cur_e) 初始条件:树T存在,cur_e是T中某

文档评论(0)

1亿VIP精品文档

相关文档