数据结构-第5章-树和二叉树.pptx
《数据结构-第5章-树和二叉树.pptx》由会员分享,可在线阅读,更多相关《数据结构-第5章-树和二叉树.pptx(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构 新世纪应用型高等教育新世纪应用型高等教育计算机类课程规划教材计算机类课程规划教材新世纪应用型高等教育教材编审委员会新世纪应用型高等教育教材编审委员会 组编组编 主编主编 曹春萍曹春萍5.1 树和二叉树的基本概念第第5 5章章树和二叉树树和二叉树5.1.1 5.1.1 树的定义及相关术语树的定义及相关术语1 1树的定义树的定义树的定义树的定义 树树(Tree)是是n(n=0)个结点的有限集个结点的有限集T,n=0时称为空树,否则它满足如下两个条件:时称为空树,否则它满足如下两个条件:(1)有且仅有一个特定的称为根)有且仅有一个特定的称为根(Root)的结点;的结点;(2)其余的结点可分
2、为)其余的结点可分为m(m=0)个互不相交的子集个互不相交的子集T1、T2、T3、Tm,其中每个子,其中每个子集又是一棵树,并称其为根结点的子树集又是一棵树,并称其为根结点的子树(Subtree)。从树的定义和图从树的定义和图5-1的示例可以看出,树具有下面两个特点:的示例可以看出,树具有下面两个特点:(1)(1)树树的根结点没有前驱结点,除根结点之外的所有结点的根结点没有前驱结点,除根结点之外的所有结点有有且且仅有一个前驱结点;仅有一个前驱结点;(2)树中所有结点可以有零个或多个后继结点。树中所有结点可以有零个或多个后继结点。5.1 树和二叉树的基本概念第第5 5章章树和二叉树树和二叉树2.
3、2.相关术语相关术语相关术语相关术语(1)树的结点树的结点 (Node)指一个数据元素及指向其子树的分支。指一个数据元素及指向其子树的分支。(2)结点的度结点的度 (Degree)结点所拥有的子树的个数称为该结点的度。图结点所拥有的子树的个数称为该结点的度。图5-1中结点中结点A的度为的度为3,结点,结点B的度为的度为4,结点,结点F的度为的度为2,结点,结点D的度为的度为1,结点,结点C、E、G、H、I、J、K的度为的度为0。(3)树的度树的度 树中各结点度的最大值称为该树的度。图树中各结点度的最大值称为该树的度。图5-1中树的度为中树的度为4。(4)分支结点分支结点 度大于度大于0的结点称
4、为分支结点或非终端结点。的结点称为分支结点或非终端结点。图图5-1中的分支结点有中的分支结点有A、B、D、F。(5)叶子结点叶子结点 (Leaf)度为度为0的结点称为叶子结点或终端结点,的结点称为叶子结点或终端结点,简称叶子。图简称叶子。图5-1中的叶子中的叶子结点为结点为C、E、G、H、I、J、K。(6)孩子结点孩子结点 (Child)某一结点的子树的根称为该结点的孩子结点,简称孩子。图某一结点的子树的根称为该结点的孩子结点,简称孩子。图5-1中结中结点点A的孩子为的孩子为B、C、D。5.1 树和二叉树的基本概念第第5 5章章树和二叉树树和二叉树(7)双亲结点双亲结点 (Parent)一个结
5、点称为它孩子结点的双亲结点。图一个结点称为它孩子结点的双亲结点。图5-1中结点中结点B的双亲为的双亲为A。(8)兄弟、堂兄弟兄弟、堂兄弟 具有同一个双亲的孩子结点互称为兄弟;双亲在同一层的结点互为堂具有同一个双亲的孩子结点互称为兄弟;双亲在同一层的结点互为堂兄弟。图兄弟。图5-1中中B、C、D为兄弟,为兄弟,E、I是堂兄弟。是堂兄弟。(9)祖先、子孙祖先、子孙 在树中,从根到某个结点所经分支上的所有结点称为该结点的祖先;一在树中,从根到某个结点所经分支上的所有结点称为该结点的祖先;一个结点的子树中的任一结点为该结点的子孙结点。个结点的子树中的任一结点为该结点的子孙结点。(10)结点的层数结点的
6、层数 (Level)规定树的根结点的层数为规定树的根结点的层数为1,其余结点的层数等于它的双亲结点,其余结点的层数等于它的双亲结点的层数加的层数加1。图。图5-1中中A的层数为的层数为1,B、C、D的层数为的层数为2,E、F、G、H、I的层数为的层数为3,J、K的的层数为层数为4。(11)树的深度树的深度 (Depth)树中所有结点的最大层数。图树中所有结点的最大层数。图5-1中树的深度为中树的深度为4。(12)有序树和无序树有序树和无序树 如果一棵树中结点的各子树从左到右是有次序的,即如果交换了某如果一棵树中结点的各子树从左到右是有次序的,即如果交换了某结点各子树的相对位置,则构成不同的树,
7、称这棵树为有序树;反之,则称为无序树。结点各子树的相对位置,则构成不同的树,称这棵树为有序树;反之,则称为无序树。(13)森林森林 (Forest)棵或更多棵互不相交的树的集合。棵或更多棵互不相交的树的集合。5.1 树和二叉树的基本概念第第5 5章章树和二叉树树和二叉树5.1.2 5.1.2 二叉树的定义及特殊二叉树二叉树的定义及特殊二叉树1 1二叉树二叉树二叉树二叉树的定义的定义的定义的定义二叉树二叉树T(Binary Tree)是是n(n0)个结点的有限集合,它满足下面两个条件:)个结点的有限集合,它满足下面两个条件:(1)当)当n=0时,时,T为空二叉树;为空二叉树;(2)当)当n0时,
8、它是由一个称为根的结点时,它是由一个称为根的结点t及两个互不相交的子集组成,其中每个子集又及两个互不相交的子集组成,其中每个子集又是一棵二叉树,分别称为是一棵二叉树,分别称为t的左子树和右子树。的左子树和右子树。由上述二叉树的定义可知,对于非空二叉树有且仅有一个结点由上述二叉树的定义可知,对于非空二叉树有且仅有一个结点t没有前驱,称为树根;除没有前驱,称为树根;除t之外,二叉树中的所有结点有且仅有一个直接前驱、最多有两个直接后继。同时,在此定义中之外,二叉树中的所有结点有且仅有一个直接前驱、最多有两个直接后继。同时,在此定义中又用到了二叉树的概念,所以二叉树的定义是一个递归定义,它刻画出了二叉
9、树的固有特性又用到了二叉树的概念,所以二叉树的定义是一个递归定义,它刻画出了二叉树的固有特性。5.1 树和二叉树的基本概念第第5 5章章树和二叉树树和二叉树5.1.2 5.1.2 二叉树的定义及特殊二叉树二叉树的定义及特殊二叉树1 1二叉树二叉树二叉树二叉树的定义的定义的定义的定义二叉树二叉树T(Binary Tree)是是n(n0)个结点的有限集合,它满足下面两个条件:)个结点的有限集合,它满足下面两个条件:(1)当)当n=0时,时,T为空二叉树;为空二叉树;(2)当)当n0时,它是由一个称为根的结点时,它是由一个称为根的结点t及两个互不相交的子集组成,其中每个子集又及两个互不相交的子集组成
10、,其中每个子集又是一棵二叉树,分别称为是一棵二叉树,分别称为t的左子树和右子树。的左子树和右子树。由上述二叉树的定义可知,对于非空二叉树有且仅有一个结点由上述二叉树的定义可知,对于非空二叉树有且仅有一个结点t没有前驱,称为树根;除没有前驱,称为树根;除t之外,二叉树中的所有结点有且仅有一个直接前驱、最多有两个直接后继。同时,在此定义中之外,二叉树中的所有结点有且仅有一个直接前驱、最多有两个直接后继。同时,在此定义中又用到了二叉树的概念,所以二叉树的定义是一个递归定义,它刻画出了二叉树的固有特性又用到了二叉树的概念,所以二叉树的定义是一个递归定义,它刻画出了二叉树的固有特性。5.1 树和二叉树的
11、基本概念第第5 5章章树和二叉树树和二叉树5.1 树和二叉树的基本概念第第5 5章章树和二叉树树和二叉树2 2特殊二叉树特殊二叉树特殊二叉树特殊二叉树(1)满二叉树满二叉树 (Full Binary Tree)若一棵二叉树的最下面一层结点度数全为若一棵二叉树的最下面一层结点度数全为0,其它所有结点的度数均为,其它所有结点的度数均为2,则称这种二叉树,则称这种二叉树为满二叉树。如图为满二叉树。如图5-7(a)所示。所示。(2)完全二叉树完全二叉树 (Complete Binary Tree)若一棵二叉树至多只有最下面的两层结点的度数小于若一棵二叉树至多只有最下面的两层结点的度数小于2,并且最下面
12、一层结点都集中在该,并且最下面一层结点都集中在该层的最左边,则称这种二叉树为完全二叉树。如图层的最左边,则称这种二叉树为完全二叉树。如图5-7(b)所示,而图所示,而图5-7(c)不是完全二叉树。)不是完全二叉树。5.1 树和二叉树的基本概念第第5 5章章树和二叉树树和二叉树5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树5.2.1 5.2.1 二叉树的性质二叉树的性质性质性质性质性质1 1 在非空二叉树的第在非空二叉树的第在非空二叉树的第在非空二叉树的第i i层上最多有层上最多有层上最多有层上最多有2i-12i-1个结点个结点个结点个结点(i1)(i1)。证明证明 此性质用数
13、学归纳法来证明。此性质用数学归纳法来证明。当当i=1时,第一层上只有时,第一层上只有个根结点,结论成立;个根结点,结论成立;假设对所有的假设对所有的j,(1ji),结论成立,即第),结论成立,即第j层上有层上有2j-1个结点。则有,对于个结点。则有,对于j=i-1时,由归时,由归纳假设可知第纳假设可知第i-1层上最多有层上最多有2i-2个结点,又由于二叉树的每个结点的度最多为个结点,又由于二叉树的每个结点的度最多为2,所以在第,所以在第i层层上的最大结点数为第上的最大结点数为第i-1层最大结点数的层最大结点数的2倍,即有倍,即有22i-2=2i-1,故对于,故对于j=i时结论成立,得证。时结论
14、成立,得证。5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树性质性质性质性质2 2 深度为深度为深度为深度为k k的二叉树最多有的二叉树最多有的二叉树最多有的二叉树最多有2k-12k-1个结点个结点个结点个结点(k1)(k1)。证明证明 由性质由性质1可知,深度为可知,深度为k的二叉树的最大结点数为:的二叉树的最大结点数为:5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树性质性质性质性质3 3 对任何一棵二叉树对任何一棵二叉树对任何一棵二叉树对任何一棵二叉树T T,如果终端结点,如果终端结点,如果终端结点,如果终端结点(叶子结点叶子结点叶子结点叶子结点)的个数为
15、的个数为的个数为的个数为n0n0,度为,度为,度为,度为2 2的结点数为的结点数为的结点数为的结点数为n2n2,那么那么那么那么n0=n2+1n0=n2+1。证明证明 设二叉树设二叉树T的总结点数为的总结点数为n,度为,度为1的结点数为的结点数为n1,由于二叉树中结点的度都小于等,由于二叉树中结点的度都小于等于于2,所以二叉树的结点总数,所以二叉树的结点总数n为:为:5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树性质性质性质性质4 4 一棵非空二叉树空子树的数目等于其结点数目加一棵非空二叉树空子树的数目等于其结点数目加一棵非空二叉树空子树的数目等于其结点数目加一棵非空二叉树空
16、子树的数目等于其结点数目加1 1。证明证明 设二叉树设二叉树T有有n个结点,将其所有空子树换成叶结点,把新的二叉树记为个结点,将其所有空子树换成叶结点,把新的二叉树记为T,即,即T中中的叶结点数恰为的叶结点数恰为T中的空子树的数目,设有中的空子树的数目,设有n0 个。所有原来树个。所有原来树T的结点现在是树的结点现在是树T的分支结点,的分支结点,即即T中分支结点有中分支结点有n个,又由于树个,又由于树T中的所有分支结点都有两个子结点,即在中的所有分支结点都有两个子结点,即在T中度为中度为2的结点的结点数数n2=n,由性质,由性质3可以得出,可以得出,n0=n+1,得证。,得证。5.2 二叉树的
17、性质和存储结构第第5 5章章树和二叉树树和二叉树性质性质性质性质5 5 具有具有具有具有n n个结点的完全二叉树的深度为个结点的完全二叉树的深度为个结点的完全二叉树的深度为个结点的完全二叉树的深度为 证明证明 设该二叉树的深度为设该二叉树的深度为K,则由性质,则由性质2和完全二叉树的定义可知:和完全二叉树的定义可知:则有则有 ,因为,因为k为数,所以有为数,所以有。5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树性质性质性质性质6 6 如果对一棵有如果对一棵有如果对一棵有如果对一棵有n n个结点的完全二叉树的结点按层数编号个结点的完全二叉树的结点按层数编号个结点的完全二叉树的结
18、点按层数编号个结点的完全二叉树的结点按层数编号(从第从第从第从第1 1层到第层到第层到第层到第 层,每层从左层,每层从左层,每层从左层,每层从左到右编号到右编号到右编号到右编号),那么对任意结点,那么对任意结点,那么对任意结点,那么对任意结点i(1in)i(1in)有:有:有:有:如果如果i1,则结点,则结点i是二叉树的根,无双亲结点;如果是二叉树的根,无双亲结点;如果i1,则其双亲结点的编号是,则其双亲结点的编号是 ;如果如果2in,则结点,则结点i无左孩子无左孩子(结点结点i为叶子结点为叶子结点);否则其左孩子结点的编号是;否则其左孩子结点的编号是2i;如果如果2i+1n,则结点,则结点i
19、无右孩子,否则其右孩子结点的编号是无右孩子,否则其右孩子结点的编号是2i+1。5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树5.2.2 5.2.2 二叉树的存储结构二叉树的存储结构1.1.二叉树的顺序存储表示二叉树的顺序存储表示二叉树的顺序存储表示二叉树的顺序存储表示(1)完全(满)二叉树的顺序存储完全(满)二叉树的顺序存储由二叉树的性质由二叉树的性质6可知,完全二叉树按层编号后,结点编号间有一定的关系。在顺序存储可知,完全二叉树按层编号后,结点编号间有一定的关系。在顺序存储中,利用此性质,将完全二叉树上编号为中,利用此性质,将完全二叉树上编号为i的结点元素存储在一维数组中下
20、标为的结点元素存储在一维数组中下标为i的分量中,图的分量中,图5-7(b)所示完全二叉树的顺序存储如图)所示完全二叉树的顺序存储如图5-8所示,这样第所示,这样第0个单元不存储数据。个单元不存储数据。5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树(2)一般二叉树的存储一般二叉树的存储对于一般二叉树可以参照完全二叉树对于一般二叉树可以参照完全二叉树的存储来实现。如图的存储来实现。如图5-9(a)所示二叉树)所示二叉树的顺序存储如图的顺序存储如图5-9(b)所示,图)所示,图5-9(c)指明了每个结点之间的相互关系。)指明了每个结点之间的相互关系。5.2 二叉树的性质和存储结构第
21、第5 5章章树和二叉树树和二叉树2.二叉树的链式存储表示二叉树的链式存储表示链式存储就是用链表来存储二叉树中的结点,通过指针反映结点之间的逻辑关系。二叉树链式存储就是用链表来存储二叉树中的结点,通过指针反映结点之间的逻辑关系。二叉树常用的链式存储形式有二叉链表、三叉链表及线索链表等。对于线索链表在后面再进行说明。常用的链式存储形式有二叉链表、三叉链表及线索链表等。对于线索链表在后面再进行说明。(1)二叉链表二叉链表二叉树中的每个结点最多有两个孩子,因此可以用这样的方式存储二叉树:在每个结点中二叉树中的每个结点最多有两个孩子,因此可以用这样的方式存储二叉树:在每个结点中包含三个域,即一个数据元素
22、域及两个分别指向左、右子树根结点的指针域组成。这种结点结包含三个域,即一个数据元素域及两个分别指向左、右子树根结点的指针域组成。这种结点结构称之为二叉链表结构。结点的存储结构如下:构称之为二叉链表结构。结点的存储结构如下:5.2 二叉树的性质和存储结构第第5 5章章树和二叉树树和二叉树(2)三叉链表三叉链表为了方便地查找双亲,在二叉链表的结点中再增加一个指向双亲的指针域,这种结构称做为了方便地查找双亲,在二叉链表的结点中再增加一个指向双亲的指针域,这种结构称做为三叉链表存储结构。结点结构如下为三叉链表存储结构。结点结构如下:其中,其中,data、lchild、rchild三个域的意义同二叉链表
23、结构;三个域的意义同二叉链表结构;parent域为指向该结点双亲域为指向该结点双亲结点的指针。同样,在三叉链表中也增加一个指向根结点的指针结点的指针。同样,在三叉链表中也增加一个指向根结点的指针BT。5.3 二叉树的遍历及线索化第第5 5章章树和二叉树树和二叉树5.3.1 5.3.1 遍历二叉树遍历二叉树在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点;或者对树中全部结点在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点;或者对树中全部结点逐一进行某种处理,比如打印出每个结点的内容、判断二叉树是否连通等等。这都是与二叉树逐一进行某种处理,比如打印出每个结点的内容、判断二叉树是
24、否连通等等。这都是与二叉树的遍历有关的问题。的遍历有关的问题。遍历二叉树遍历二叉树 (Traversing Binary Tree)是指按照某条搜索路径访问二叉树中的每个结点是指按照某条搜索路径访问二叉树中的每个结点,使得每一个结点均被访问一次,而且仅被访问一次。使得每一个结点均被访问一次,而且仅被访问一次。在此的所谓在此的所谓“访问访问”可以是对结点做各种处理,如输出结点数据可以是对结点做各种处理,如输出结点数据域域值值、比较、更新、查看元素内容等等、比较、更新、查看元素内容等等。对线性表的遍历,可以按表的顺序很简单地实现。但由于对线性表的遍历,可以按表的顺序很简单地实现。但由于二叉树二叉树
25、是是一种非线性结构,因此,对二叉树的遍历就不能那样简单地实现。一种非线性结构,因此,对二叉树的遍历就不能那样简单地实现。5.3 二叉树的遍历及线索化第第5 5章章树和二叉树树和二叉树1.1.二叉树遍历的递归算法二叉树遍历的递归算法二叉树遍历的递归算法二叉树遍历的递归算法(1)先序遍历(先序遍历(Preorder Traversal)先序遍历的递归过程为:若二叉树为空,遍历结束。否则先序遍历的递归过程为:若二叉树为空,遍历结束。否则 访问根结点;访问根结点;先序遍历根的左子树;先序遍历根的左子树;先序遍历根的右子树。先序遍历根的右子树。5.3 二叉树的遍历及线索化第第5 5章章树和二叉树树和二叉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉
限制150内