- 1、本文档共129页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章_01(ldq)3
数 据 结 构 ——C语言描述; 数据结构——
线性结构:线性表、栈、队列、串
非线性结构:至少存在一个数据元素有不止一个直接前驱或后继(树或图等);6.1 树的定义与基本术语 ;A;
;;H;结点:包含一个数据元素及若干指向其他结点的分支信息。
结点的度:结点所拥有的子树的个数。
树的度:树中各结点度的最大值。;叶子结点:度为0的结点,也称为终端结点。
分支结点:度不为0的结点,也称为非终端结点。;孩子、双亲:
一个结点的直接后继称为该结点的孩子结点;
一个结点的直接前驱称为该结点的双亲结点。
兄弟:具有同一个双亲的孩子结点互称为兄弟。 ;祖先、子孙:在树中,如果有一条路径从结点x到结点y,那么x就称为y的祖先,而y称为x的子孙。;路径:如果树的结点序列n1, n2, …, nk有如下关系:结点ni是ni+1的双亲(1=ik),则把n1, n2, …, nk称为一条由n1至nk的路径;路径上经过的边的个数称为路径长度。 ;结点所在层数:根结点的层数为1;对其余任何结点,若某结点在第k层,则其孩子结点在第k+1层。
树的深度:树中所有结点的最大层数,也称高度。;
;有序树、无序树:如果一棵树中结点的各子树从左到右是有次序的,称这棵树为有序树;反之,称为无序树。;
;同构:对两棵树,若通过对结点适当地重命名,就可以使这两棵树完全相等(结点对应相等,结点对应关系也相等),则称这两棵树同构。;树结构和线性结构的比较;ADT Tree{
数据对象D:具有相同的特性数据元素的集合。
数据关系R: 若D为空集,则为空树。 若D中仅含有一个数据元素,则R为空集,否则R={H},H是如下的二元关系:
(1) 在D中存在唯一的称为根的数据元素root, 它在关系H下没有前驱。
(2) 除root以外, D中每个结点在关系H下都有且仅有一个前驱。 ;基本操作P:
(1) InitTree(T): 将T初始化为一棵空树。
(2) DestoryTree(T): 销毁树T。
CreateTree(T):创建树T。
TreeEmpty(T):若T为空, 则返回TRUE, 否则返回FALSE。
(5) TreeDepth(T) :树T存在,返回T的深度。
Root(T): 返回树T的根。
Value(T,cur_e):树T存在???返回树T中结点cur_e的值。
(8) Parent(T, cur_e): 树T存在, cur_e是T中非根结点 ,则返回它的双亲, 否则返回“空”。
(9) LeftChild(T,cur_e): 树T存在, cur_e是T中的非叶子结点,则返回它的最左孩子, 否则返回“空”。 ;(10) Assign(T,cur_e,value): 树T存在,cur_e是T中的某个结点。结点cur_e赋值为value。
(11) RightSibling(T,cur_e):树T存在,cur_e是T中的某个结点,若cur_e有有兄弟,则返回它的有兄弟,否则返回空值。
(12) InsertChild(T, p,i,c):树T存在,p指向T中某个结点,非空树c与T不相交。将c插入T中, 做p所指向结点的第i棵子树。
(13)DeleteChild(T,p,i): 树T存在, p指向T中某个结点, 1≤i≤d,d为p所指向结点的度。 删除T中p所指向结点的第i棵子树。
(14)TraverseT(T,Visit()): 树T存在,Visit()是对结点操作的应用函数。按照某种次序对树T的每个结点调用Visit()函数访问一次且最多一次。若Visit()失败, 则操作失败。 ;6.2 二叉树;二叉树的基本形态:; (1) Initiate(bt):将bt初始化为空二叉树。
(2) Create(bt): 创建一棵非空二叉树bt。
(3) Destory(bt): 销毁二叉树bt。
(4) Empty(bt):若bt为空,则返回TRUE,否则返回FALSE。
(5) Root(bt): 求二叉树bt的根结点。若bt为空二叉树, 则函数返回“空”。
(6) Parent(bt, x):求双亲函数。求二叉树bt中结点x的双亲结点。若结点x是二叉树的根结点或二叉树bt中无结点x, 则返回“空”。 ; (7) LeftChild(bt, x):求左孩子。 若结点x为叶子结点或x不在bt中, 则返回“空”。
(8) RightChild(bt, x):求右孩子。 若结点x为
文档评论(0)