数据结构二叉树精.ppt
《数据结构二叉树精.ppt》由会员分享,可在线阅读,更多相关《数据结构二叉树精.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构二叉树第1页,本讲稿共44页请安静请安静 6.1树的定义和基本术语树的定义和基本术语第2页,本讲稿共44页 1数据的逻辑结数据的逻辑结构构 2、数据的存储结构、数据的存储结构 3、对数据的操作:检索、排序、插入、删除、修改、对数据的操作:检索、排序、插入、删除、修改A线性结构线性结构 B非线性结构非线性结构A 顺序存储顺序存储 B 链式存储链式存储 线性表线性表栈栈队列队列树形结构树形结构图形结构图形结构数数据据结结构构的的三三个个主主要要问问题题 Data Structure树的逻辑结构树的逻辑结构?一对多(一对多(1:n)第3页,本讲稿共44页五子棋游戏.树的实例第4页,本讲稿共4
2、4页/(root)libuseretcbinmathdsswyintaoxieStack.cppQueue.cppTree.cpp人类的族谱各种社会关系各类分类编码编译程序的语法树Internet中的DNS(域名系统)UNIX文件系统结构树的实例第5页,本讲稿共44页 树是一类重要的非线性数据结构,是以分支关系定义的层次结构定义:树定义:树(tree)是是n(n0)个结点的有限集,其中:个结点的有限集,其中:n=0,称为,称为空树空树有且仅有一个特殊的结点,称为树的有且仅有一个特殊的结点,称为树的根根(root)当当n1时,其余结点可分为时,其余结点可分为m(m0)个个互不相交的互不相交的子集
3、子集T1,T2,Tm,其中每一个集合本身又是一棵树,称为根的其中每一个集合本身又是一棵树,称为根的子树子树(subtree)特点:特点:树中至少有一个结点树中至少有一个结点根根树的定义是树的定义是递归递归定义的,各定义的,各子树子树也满足上面定义。也满足上面定义。树的定义 第6页,本讲稿共44页线性结构线性结构 树型结构树型结构 第一个数据元素第一个数据元素 (无前驱无前驱)根结点根结点 (无前驱无前驱)最后一个数据元素最后一个数据元素 (无后继无后继)多个叶子结点多个叶子结点 (无后继无后继)其它数据元素其它数据元素 (一个前驱、一个前驱、一个后继一个后继)其它数据元素其它数据元素 (一个前
4、驱、一个前驱、多个后继多个后继)第7页,本讲稿共44页A只有根结点的树 ABCDEFGHIJKLM有子树的树 根 子树 叶子叶子叶子 第8页,本讲稿共44页ADT Tree 数据对象数据对象D:D是具有相同特性的数据元素的集合是具有相同特性的数据元素的集合 数据关系数据关系R:若若D为空集,则称为为空集,则称为空树空树 否则否则:(1)在在D中存在唯一的称为中存在唯一的称为根根的数据元素的数据元素root;(2)当当n1时,其余结点可分为时,其余结点可分为m(m0)个个互不相交互不相交的的 有限集有限集T1,T2,Tm,其中每一棵子集本身又是,其中每一棵子集本身又是 一棵符合本定义的树,称为根
5、一棵符合本定义的树,称为根root的的子树子树 基本操作基本操作:查找类查找类操作操作 插入类插入类操作操作 删除类删除类操作操作 ADT Tree树的抽象数据类型定义第9页,本讲稿共44页基本操作:基本操作:TreeEmpty(T)初始条件初始条件:树:树T已存在已存在操作结果操作结果:空树,返回:空树,返回 TRUE;否则否则 FALSETreeDepth(T)初始条件初始条件:树:树T已存在已存在操作结果操作结果:返回:返回 T 的深度的深度查找类:查找类:Root(T)初始条件初始条件:树:树T已存在已存在操作结果操作结果:返回:返回T的根的根Value(T,cur_e)初始条件初始条
6、件:树:树T已存在已存在,cur_e是是T中结点中结点操作结果操作结果:返回:返回cur_e 的值的值Parent(T,cur_e)初始条件初始条件:树:树T已存在已存在,cur_e是是T中结点中结点操作结果操作结果:若若cur_e是是T中非根结点中非根结点,返回其双亲返回其双亲;否则否则,返回空返回空树的抽象数据类型定义第10页,本讲稿共44页LeftChild(T,cur_e)初始条件初始条件:树:树T已存在已存在,cur_e是是T中结点中结点操作结果操作结果:若若cur_e是是T中非叶子结点中非叶子结点,返回其最左孩子返回其最左孩子;否则否则,返回空返回空RightChild(T,cur
7、_e)初始条件初始条件:树:树T已存在已存在,cur_e是是T中结点中结点操作结果操作结果:若若cur_e是是T中非叶子结点中非叶子结点,返回其最右孩子返回其最右孩子;否则否则,返回空返回空TraverseTree(T,visit()初始条件初始条件:树:树T已存在已存在操作结果操作结果:按某种次序对:按某种次序对T 的每个元素调用函数的每个元素调用函数visit()查找类:查找类:基本操作:基本操作:树的抽象数据类型定义第11页,本讲稿共44页插入类:插入类:InsertChild(&T,&p,i,c)初始条件初始条件:树树T存在存在,p指向指向T中结点中结点,1i p指结点度指结点度+1,
8、非空树非空树c与与T不相交不相交操作结果操作结果:将以:将以c为根的树插入为为根的树插入为T中中p指结点的第指结点的第i棵子树棵子树CreateTree(&T,definition)初始条件初始条件:definition给出树的定义给出树的定义操作结果操作结果:按:按definition构造树构造树TAssign(T,cur_e,value)初始条件初始条件:树:树T已存在已存在,cur_e是是T中结点中结点操作结果操作结果:结点:结点cur_e赋值为赋值为valueInitTree(&T)操作结果操作结果:构造空树:构造空树T基本操作:基本操作:树的抽象数据类型定义第12页,本讲稿共44页D
9、eleteChild(&T,&p,i)初始条件初始条件:树:树T存在存在,p指向指向T中结点中结点,1i p指结点度指结点度操作结果操作结果:删除:删除T中中p指结点的第指结点的第i棵子树棵子树ClearTree(&T)初始条件初始条件:树:树T 已存在已存在操作结果操作结果:将树:将树T 清为空树清为空树DestroyTree(&T)初始条件初始条件:树:树T 已存在已存在操作结果操作结果:销毁树:销毁树T删除类:删除类:基本操作:基本操作:树的抽象数据类型定义第13页,本讲稿共44页结点结点(node)表示树中的元素,以及构造元素表示树中的元素,以及构造元素之间关系的指针之间关系的指针 结
10、点的度结点的度(degree)结点拥有的子树数结点拥有的子树数 树的度树的度一棵树中最大的结点度数一棵树中最大的结点度数 叶子叶子(leaf)度为度为0的结点,终端结点的结点,终端结点 分支结点分支结点度不为度不为0的结点,非终端结点的结点,非终端结点 孩子孩子(child)结点子树的根称为该结点的孩子结点子树的根称为该结点的孩子 双亲双亲(parents)孩子结点的上层结点叫该结孩子结点的上层结点叫该结点的双亲点的双亲 树的基本术语 第14页,本讲稿共44页兄弟兄弟(sibling)同一双亲的孩子同一双亲的孩子 祖先祖先从根到该结点所经分支上的所有结点从根到该结点所经分支上的所有结点 子孙(
11、后裔)子孙(后裔)一个节点所有子树上的节点一个节点所有子树上的节点节点的节点的层次层次(level)从根结点算起,根为第一从根结点算起,根为第一层,它的孩子为第二层层,它的孩子为第二层 堂兄弟堂兄弟同一层的结点同一层的结点深度深度(depth)树中结点的最大层次数树中结点的最大层次数,又称又称高度高度树的基本术语 第15页,本讲稿共44页森林森林(forest)m(m 0)棵互不相交的树的集棵互不相交的树的集合合 无序树无序树子树之间不存在确定的次序关系子树之间不存在确定的次序关系 有序树有序树各子树从左至右有严格的次序,不能各子树从左至右有严格的次序,不能互换,最左边的节点称为第一个孩子,最
12、右边的节互换,最左边的节点称为第一个孩子,最右边的节点称为最后一个孩子点称为最后一个孩子 任何一棵非空树是一个二元组任何一棵非空树是一个二元组 Tree=(root,F)其中:其中:root 被称为根结点被称为根结点 F 被称为子树森林被称为子树森林 树的基本术语 第16页,本讲稿共44页树的表示 JIACBDHGFEKLM图形表示法图形表示法嵌套集合表示法嵌套集合表示法广义表表示法广义表表示法凹入表示法凹入表示法第17页,本讲稿共44页GCKLEFBMHJIDA嵌套集合表示法嵌套集合表示法 图型表示法图型表示法 树的表示 JIACBDHGFEKLM第18页,本讲稿共44页(A(B(E(k,L
13、),F),C(G),D(H(M),I,J)括号括号(广义表广义表)表示法表示法 图型表示法图型表示法 树的表示 JIACBDHGFEKLM第19页,本讲稿共44页图型表示法图型表示法 ABCDEFGHIJKLM凹入表示法凹入表示法 树的表示 JIACBDHGFEKLM第20页,本讲稿共44页结点结点A的度:的度:结点结点B的度:的度:结点结点M的度:的度:叶子:叶子:结点结点A的孩子:的孩子:结点结点B的孩子:的孩子:结点结点I的双亲:的双亲:结点结点L的双亲:的双亲:结点结点B,C,D为为结点结点K,L为为树的度:树的度:结点结点A的层次:的层次:结点结点M的层次:的层次:树的深度:树的深度
14、:结点结点F,G为为结点结点A是结点是结点F,G的的结点结点F,G 是是A结点的结点的ABCDEFGHIJKLM3 2 0 B,C,D E,F 31 4 4 K,L,F,G,M,I,J D E 兄弟兄弟 兄弟兄弟 堂兄弟堂兄弟 祖先祖先 子孙子孙 请同学回答 第21页,本讲稿共44页请安静请安静 6.2二二 叉叉 树树第22页,本讲稿共44页6.2 6.2 二叉树二叉树 为为何何要要重重点点研研究究每每结结点点最最多多只只有有两两个个 “叉叉叉叉”的树?的树?的树?的树?二叉树的结构最简单,规律性最强;二叉树的结构最简单,规律性最强;二叉树的结构最简单,规律性最强;二叉树的结构最简单,规律性最
15、强;可以证明,所有树都能转换为唯一的一棵二叉树与可以证明,所有树都能转换为唯一的一棵二叉树与其对应,不失一般性。其对应,不失一般性。6.2.1 二叉树的定义二叉树的定义二叉树的定义二叉树的定义6.2.2 6.2.2 二叉树的性质二叉树的性质6.2.3 6.2.3 二叉树的存储结构二叉树的存储结构二叉树的存储结构二叉树的存储结构第23页,本讲稿共44页定义:二叉树是定义:二叉树是n(n 0)个结点的有限集,它或为个结点的有限集,它或为空树空树(n=0),或由一个根结点和两棵分别称为或由一个根结点和两棵分别称为左子树左子树和和右子树右子树的互不相交的的互不相交的二叉树构成二叉树构成 特点特点 每个
16、结点每个结点至多至多有二棵子树有二棵子树 (不存在度大于不存在度大于2的结点的结点)子树有子树有左、右之分左、右之分,且其次序不能任意颠倒,且其次序不能任意颠倒 基本形态基本形态 空二叉树 左、右子树均非空 DRL只有根结点二叉树 D右子树为空 DL左子树为空 DR二叉树的定义 第24页,本讲稿共44页有关二叉树下列说法正确的是()A二叉树的度为2 B一棵二叉树的度可以小于2C二叉树中至少有一个结点的度为2 D二叉树中任何一个结点的度都为2问:一棵度为2的树和一棵二叉树有何区别?试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。二叉树的定义 第25页,本讲稿共44页二叉树的抽象数据类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉
限制150内