数据结构C树和二叉树.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构C树和二叉树.pptx》由会员分享,可在线阅读,更多相关《数据结构C树和二叉树.pptx(202页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、树的定义树的定义树:树:n(n0)个个结点结点的有限的有限集合集合。当当n0时,称为空树;时,称为空树;任意一棵非空树满足以下条件:任意一棵非空树满足以下条件:有且仅有一个特定的称为有且仅有一个特定的称为根根的结点;的结点;当当n1时时,除除根根结结点点之之外外的的其其余余结结点点被被分分成成m(m0)个个互互不不相相交交的的有有限限集集合合T1,T2,Tm,其其中中每每个个集集合合又又是是一一棵棵树树,并称为这个根结点的并称为这个根结点的子树子树。5.1 树的逻辑结构树的逻辑结构树的定义是采用递归方法树的定义是采用递归方法第1页/共202页(a)一棵树结构一棵树结构 (b)一个非树结构一个非
2、树结构 (c)一个非树结构一个非树结构 5.1 树的逻辑结构树的逻辑结构树的定义树的定义ACBGFEDHIACBGFDACBGFDE第2页/共202页树的应用举例树的应用举例文件结构文件结构5.1 树的逻辑结构树的逻辑结构My ComputerC:D:E:etcWINDOWSProgram FilesPictureMusic第3页/共202页树的基本术语树的基本术语结点的度:结点的度:结点所拥有的子树的个数。结点所拥有的子树的个数。树的度:树的度:树中各结点度的最大值。树中各结点度的最大值。5.1 树的逻辑结构树的逻辑结构CGBDEFKLHMIJA第4页/共202页5.1 树的逻辑结构树的逻辑
3、结构叶子结点:叶子结点:度为度为0的结点,也称为终端结点。的结点,也称为终端结点。分支结点:分支结点:度不为度不为0的结点,也称为非终端结点。的结点,也称为非终端结点。CGBDEFKLHMIJA树的基本术语树的基本术语第5页/共202页孩子、双亲:孩子、双亲:树中某结点子树的根结点称为这个结点的孩子结树中某结点子树的根结点称为这个结点的孩子结点,这个结点称为它孩子结点的双亲结点;点,这个结点称为它孩子结点的双亲结点;兄弟兄弟:具有同一个双亲的孩子结点互称为兄弟。:具有同一个双亲的孩子结点互称为兄弟。5.1 树的逻辑结构树的逻辑结构CGBDEFKLHMIJA树的基本术语树的基本术语第6页/共20
4、2页路径:路径:如果树的结点序列如果树的结点序列n1,n2,nk有如下关系:结点有如下关系:结点ni是是ni+1的双亲(的双亲(1=ik),则把,则把n1,n2,nk称为一条由称为一条由n1至至nk的的路径;路径上经过的边的个数称为路径;路径上经过的边的个数称为路径长度路径长度。CGBDEFKLHMIJA5.1 树的逻辑结构树的逻辑结构树的基本术语树的基本术语第7页/共202页祖先、子孙:祖先、子孙:在树中,如果有一条路径从结点在树中,如果有一条路径从结点x到结到结点点y,那么那么x就称为就称为y的祖先,而的祖先,而y称为称为x的子孙。的子孙。5.1 树的逻辑结构树的逻辑结构CGBDEFKLH
5、MIJA树的基本术语树的基本术语第8页/共202页结点所在层数:结点所在层数:根结点的层数为根结点的层数为1 1;对其余任何结点,;对其余任何结点,若某结点在第若某结点在第k k层,则其孩子结点在第层,则其孩子结点在第k+1k+1层。层。树的深度:树的深度:树中所有结点的最大层数,也称树中所有结点的最大层数,也称高度高度。1 1层层2层层4 4层层3层层高度高度4CGBDEFKLHMIJC5.1 树的逻辑结构树的逻辑结构树的基本术语树的基本术语第9页/共202页CBDEFKLHJA71234568910层序编号:层序编号:将树中结点按照从上层到下层、同层从左将树中结点按照从上层到下层、同层从左
6、到右的次序依次给他们编以从到右的次序依次给他们编以从1 1开始的连续自然数。开始的连续自然数。5.1 树的逻辑结构树的逻辑结构树的基本术语树的基本术语第10页/共202页有序树、无序树:有序树、无序树:如果一棵树中结点的各子树从左如果一棵树中结点的各子树从左到右是有次序的,称这棵树为有序树;反之,称为到右是有次序的,称这棵树为有序树;反之,称为无序树。无序树。数据结构中讨论的一般都是有序树数据结构中讨论的一般都是有序树 5.1 树的逻辑结构树的逻辑结构树的基本术语树的基本术语ACBGFEDACBGFED第11页/共202页CBDEFKLHJ森林:森林:m(m0)棵互不相交的树的集合。棵互不相交
7、的树的集合。5.1 树的逻辑结构树的逻辑结构树的基本术语树的基本术语A第12页/共202页同同构构:对对两两棵棵树树,若若通通过过对对结结点点适适当当地地重重命命名名,就就可可以以使使这这两两棵棵树树完完全全相相等等(结结点点对对应应相相等等,结结点点对对应应关关系系也也相相等等),则称这两棵树同构。,则称这两棵树同构。5.1 树的逻辑结构树的逻辑结构树的基本术语树的基本术语ACBGFEDDAECFBG第13页/共202页树结构和线性结构的比较树结构和线性结构的比较线性结构线性结构线性结构线性结构树结构树结构树结构树结构第第一一个数据元素个数据元素根结点(只有根结点(只有一一个)个)无前驱无前
8、驱无双亲无双亲最后最后一一个数据元素个数据元素叶子结点叶子结点(可以有可以有多多个个)无后继无后继无孩子无孩子其它数据元素其它数据元素其它结点其它结点一个前驱一个前驱,一个后一个后继继一个双亲一个双亲,多个孩子多个孩子一对一一对一一对一一对一 一对多一对多一对多一对多5.1 树的逻辑结构树的逻辑结构第14页/共202页树的遍历操作树的遍历操作 树的遍历:树的遍历:从从根根结点出发,按照某种结点出发,按照某种次次序访问序访问树中所有结点,树中所有结点,使得每个结点被访问一次且仅被访问一次。使得每个结点被访问一次且仅被访问一次。如何理解如何理解访问访问?抽象抽象操作,操作,可以是对结点进行的各种处
9、理,这里可以是对结点进行的各种处理,这里简化为输出简化为输出结点的数据。结点的数据。如何理解如何理解次序次序?树树通常有前序(根)遍历、后序(根)遍历和层序(次)通常有前序(根)遍历、后序(根)遍历和层序(次)遍历三种方式。遍历三种方式。5.1 树的逻辑结构树的逻辑结构树结构(非线性结构)树结构(非线性结构)线性结构。线性结构。遍历的实质遍历的实质?第15页/共202页前序遍历前序遍历 树的树的前序遍历前序遍历操作定义为:操作定义为:若树为空,则空操作返回;否则若树为空,则空操作返回;否则 访问根结点;访问根结点;按照从左到右的顺序按照从左到右的顺序前序遍历前序遍历根结点的每一棵子树。根结点的
10、每一棵子树。5.1 树的逻辑结构树的逻辑结构前序遍历序列:前序遍历序列:A B D E H I F C GACBGFEDHI第16页/共202页后序遍历后序遍历 树的后序遍历操作定义为:树的后序遍历操作定义为:若树为空,则空操作返回;否则若树为空,则空操作返回;否则 按按照照从从左左到到右右的的顺顺序序后后序序遍遍历历根结点的每一棵子树;根结点的每一棵子树;访问根结点。访问根结点。5.1 树的逻辑结构树的逻辑结构后序遍历序列:后序遍历序列:D H I E F B G C AACBGFEDHI第17页/共202页层序遍历层序遍历 树的层序遍历操作定义为:树的层序遍历操作定义为:从从树树的的第第一
11、一层层(即即根根结结点点)开开始始,自自上上而而下下逐逐层层遍遍历历,在在同同一一层层中中,按按从从左左到到右右的的顺顺序序对对结结点点逐逐个个访访问。问。5.1 树的逻辑结构树的逻辑结构层序遍历序列:层序遍历序列:A B C D E F G H IACBGFEDHI第18页/共202页5.2 树的存储结构树的存储结构实现树的存储结构,关键是什么实现树的存储结构,关键是什么?树中结点之间的逻辑关系是什么树中结点之间的逻辑关系是什么?一对多的关系一对多的关系存储结构的关键:如何表示结点的双亲和孩子存储结构的关键:如何表示结点的双亲和孩子如何表示树中结点之间的逻辑关系。如何表示树中结点之间的逻辑关
12、系。第19页/共202页双亲表示法双亲表示法双亲表示法双亲表示法基本思想:基本思想:用一维数组来存储树的各个结点(一般按用一维数组来存储树的各个结点(一般按层序层序存储),存储),数组中的一个元素对应树中的数组中的一个元素对应树中的一个结点,一个结点,每个结点记录两类信息:结点的数据信息以及该结点的双亲每个结点记录两类信息:结点的数据信息以及该结点的双亲在数组中的下标。在数组中的下标。5.2 树的存储结构树的存储结构 data parentdata:存储树中结点的数据信息存储树中结点的数据信息parent:存储该结点的双亲在数组中的下标存储该结点的双亲在数组中的下标第20页/共202页temp
13、late struct PNode T data;/数据域数据域 int parent;/指针域,双亲在数组中的下标指针域,双亲在数组中的下标;data parent5.2 树的存储结构树的存储结构树的双亲表示法实质上是一个树的双亲表示法实质上是一个静态链表静态链表。双亲表示法中结点数据类型的定义双亲表示法中结点数据类型的定义双亲表示法中结点数据类型的定义双亲表示法中结点数据类型的定义第21页/共202页下标下标 data parent012345678 A -1 B 0 C 0 D 1 E 1 F 1 G 2 H 2 I 4 5.2 树的存储结构树的存储结构如何查找如何查找双亲双亲结点?时间
14、性能?结点?时间性能?双亲表示法双亲表示法双亲表示法双亲表示法ACBHFEDGI第22页/共202页5.2 树的存储结构树的存储结构双亲表示法双亲表示法双亲表示法双亲表示法ACBHFEDGI如何查找如何查找孩子孩子结点?时间性能?结点?时间性能?下标下标 data parentfirstchild 1 3 6-1 8-1-1-1-1012345678 A -1 B 0 C 0 D 1 E 1 F 1 G 2 H 2 I 4 第23页/共202页下标下标 data parent rightsib-1 2-1 4 5-17-1-15.2 树的存储结构树的存储结构双亲表示法双亲表示法双亲表示法双亲表
15、示法012345678 A -1 B 0 C 0 D 1 E 1 F 1 G 2 H 2 I 4 ACBHFEDGI如何查找如何查找兄弟兄弟结点?时间性能?结点?时间性能?第24页/共202页链表中的每个结点包括一个数据域和多个指针域,每个指针链表中的每个结点包括一个数据域和多个指针域,每个指针域指向该结点的一个孩子结点。域指向该结点的一个孩子结点。如何确定链表中的结点结构?如何确定链表中的结点结构?5.2 树的存储结构树的存储结构孩子表示法孩子表示法-多重链表表示法多重链表表示法方案一:方案一:指针域的个数等于树的度指针域的个数等于树的度data child1 child2 childd其中
16、:其中:data:数据域,存放该结点的数据信息;数据域,存放该结点的数据信息;child1childd:指针域,指向该结点的孩子。指针域,指向该结点的孩子。第25页/共202页5.2 树的存储结构树的存储结构缺点:浪费空间缺点:浪费空间ACBHFEDGIABCDEFGHI 第26页/共202页链表中的每个结点包括一个数据域和多个指针域,每个指针链表中的每个结点包括一个数据域和多个指针域,每个指针域指向该结点的一个孩子结点。域指向该结点的一个孩子结点。如何确定链表中的结点结构?如何确定链表中的结点结构?5.2 树的存储结构树的存储结构方案二:方案二:指针域的个数等于该结点的度指针域的个数等于该结
17、点的度 data degree child1 child2 childd其中:其中:data:数据域,存放该结点的数据信息;数据域,存放该结点的数据信息;degree:度域,存放该结点的度;度域,存放该结点的度;child1childd:指针域,指向该结点的孩子。指针域,指向该结点的孩子。孩子表示法孩子表示法-多重链表表示法多重链表表示法第27页/共202页5.2 树的存储结构树的存储结构缺点:结点结构不一致缺点:结点结构不一致ACBHFEDGIA 2B 3C 2E 1I 0G 0H 0F 0D 0第28页/共202页基本思想:基本思想:把每个结点的孩子排列把每个结点的孩子排列起来,看成是一个
18、线性表,且以单链表起来,看成是一个线性表,且以单链表存储,存储,则则n个结点共有个结点共有 n 个孩子链表个孩子链表。这这 n 个单链表共有个单链表共有 n 个头指针,个头指针,这这 n 个头指针又组成了一个个头指针又组成了一个线性表。线性表。为了便于进行查找为了便于进行查找采用顺序存储采用顺序存储。最后,最后,将存放将存放 n 个头指针的数组和存放个头指针的数组和存放n个结点的数组结合起个结点的数组结合起来,构成孩子链表的来,构成孩子链表的表头数组表头数组。5.2 树的存储结构树的存储结构特点:将每个结点的所有孩子放在一起,构成线性表。特点:将每个结点的所有孩子放在一起,构成线性表。孩子表示
19、法孩子表示法-孩子链表表示法孩子链表表示法第29页/共202页ACBHFEDGI012345678下标下标 data firstchild A B C D E F G H I 5.2 树的存储结构树的存储结构12 345 7 68 第30页/共202页child next孩子结点孩子结点struct CTNode int child;CTNode*next;5.2 树的存储结构树的存储结构template struct CBNode T data;CTNode*firstchild;孩子链表表示法孩子链表表示法Data firstchild表头结点表头结点第31页/共202页ACBHFEDGI
20、012345678下标下标 data firstchild A B C D E F G H I 5.2 树的存储结构树的存储结构如如何何查查找找孩孩子子结结点?点?12 345 7 68 第32页/共202页ACBHFEDGI012345678下标下标 data firstchild A B C D E F G H I 5.2 树的存储结构树的存储结构12 345 7 68 如如何何查查找找双双亲亲结点?结点?第33页/共202页ACBHFEDGI012345678下标下标 data firstchild A B C D E F G H I 5.2 树的存储结构树的存储结构12 345 7 6
21、8 如如何何查查找找兄兄弟弟结点?结点?第34页/共202页孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法5.2 树的存储结构树的存储结构ACBHFEDGI某结点的第一个孩子是惟一的某结点的第一个孩子是惟一的某结点的右兄弟是惟一的某结点的右兄弟是惟一的设置两个分别指向该结点的设置两个分别指向该结点的第一个孩子和右兄第一个孩子和右兄弟的指针弟的指针 第35页/共202页template struct TNode T data;TNode *firstchild,*rightsib;5.2 树的存储结构树的存储结构结点结构结点结构firstchild data rightsibdata:
22、数据域,存储该结点的数据信息;数据域,存储该结点的数据信息;firstchild:指针域,指向该结点第一个孩子;指针域,指向该结点第一个孩子;rightsib:指针域,指向该结点的右兄弟结点。指针域,指向该结点的右兄弟结点。孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法第36页/共202页5.2 树的存储结构树的存储结构孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法ACBHFEDGI A B C D E F G H I如如何何查查找找兄兄弟弟结结点点?第37页/共202页5.2 树的存储结构树的存储结构孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法ACBHFEDG
23、I A B C D E F G H I如如何何查查找找孩孩子子结结点点?第38页/共202页树的存储结构小结顺序存储:本质上是静态指针双亲表示法链式存储:多重链表示法孩子链表表示法孩子兄弟表示法第39页/共202页二叉树的定义二叉树的定义二叉树的定义二叉树的定义 二叉树是二叉树是n(n0)个结点的有限集合,该集合或者为空个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵集(称为空二叉树),或者由一个根结点和两棵互不相互不相交交的、分别称为根结点的的、分别称为根结点的左子树左子树和和右子树右子树的二叉树组成。的二叉树组成。5.3 二叉树的逻辑结构二叉树的逻辑结构结构简单,
24、适合于计算机处理结构简单,适合于计算机处理结构简单,适合于计算机处理结构简单,适合于计算机处理问题转化:将树转换为二叉树,从而利用二叉树解决树的有问题转化:将树转换为二叉树,从而利用二叉树解决树的有问题转化:将树转换为二叉树,从而利用二叉树解决树的有问题转化:将树转换为二叉树,从而利用二叉树解决树的有关问题。关问题。关问题。关问题。研究二叉树的意义?研究二叉树的意义?第40页/共202页二叉树的特点:二叉树的特点:每个结点最多有两棵子树;每个结点最多有两棵子树;二叉树是有序的,其次序不二叉树是有序的,其次序不能任意颠倒能任意颠倒。5.3 二叉树的逻辑结构二叉树的逻辑结构注意:二叉树和树是两种树
25、结构。注意:二叉树和树是两种树结构。ABCDEFGABAB第41页/共202页二叉树的基本形态二叉树的基本形态空二叉树空二叉树只有一个根结点只有一个根结点左子树左子树根结点只有左子树根结点只有左子树右子树右子树根结点只有右子树根结点只有右子树左子树左子树右子树右子树根结点同时有左右子树根结点同时有左右子树5.3 二叉树的逻辑结构二叉树的逻辑结构第42页/共202页5.3 二叉树的逻辑结构二叉树的逻辑结构具有具有3 3个结点的树和具有个结点的树和具有3 3个结点的二叉树的形态个结点的二叉树的形态v二叉树和树是两种树结构。二叉树和树是两种树结构。第43页/共202页特殊的二叉树特殊的二叉树斜树斜树
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内