数据结构树和二叉树教案.docx
- 文档编号:6416141
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:34
- 大小:1.20MB
数据结构树和二叉树教案.docx
《数据结构树和二叉树教案.docx》由会员分享,可在线阅读,更多相关《数据结构树和二叉树教案.docx(34页珍藏版)》请在冰豆网上搜索。
数据结构树和二叉树教案
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
第六章树和二叉树
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面呢,我们就讨论第六章、树和二叉树。
那么我们回忆一下数据结构四大类。
第一类,线性结构,除了广义表以外,我们都讨论完了。
现在我们开始讨论第二大类,树形结构,在树形结构里面呢,我们主要讨论两种结构。
一类树,一类二叉树(线性结构里头我们讨论了什么?
)。
首先,我们先看树的数据类型定义。
那先看数据对象D:
具有相同特性的数据元素的集合,这就是它的数据对象。
数据元素之间是一个什么样的关系呢,我们用下面这段话来描述。
如果数据对象是一个空集,我们称之为空树。
从这里看得出来,所有的数据结构都这样一个空的这样一个结构。
空串、空表等等。
空树的意思是一个数据元素都没有。
否则的话,如果这个集合不是一个空集的话,那么在这个数据结构里面一定存在一个成为根的数据元素root,而且这个数据元素一定是唯一的。
就是说,一定存在,而且唯一。
那么就是说除了空树以外,如果数据集合里面只有一个数据元素的话,那么这个数据元素,就是这个树的根。
如果说这个数据集合里面的元素个数大于1的话,其余个结点呢,我们一定可以给它分成m个子集。
这些子集互不相交。
并且每个子集本身呢,又是一棵符合上面定义的树。
这些子集是树,而且称之为根的子树。
我们看一个例子,(画图)ABCDEFGIJ这是一个树,当然它不是空树,这个树呢是9个数据元素的集合。
一定存在这一个叫做根的结点。
这个A呢,我们称之为树根,除了这个根以外,我们可以分成这样三个集合。
以B开始的一个子集,以C开始的一个子集,和D开始的一个子集。
这三个子集互不相交,每个子集呢又是一棵树,并且它和根呢,有一个关系存在,这棵树叫做根的子树。
这棵树呢,又存在一个根结点,这root根和我们子树根之间,存在这一个这样一个前驱后继的关系,一般画树,我们不画箭头,但是我们讨论的是有向树,是有箭头的。
就是说BCD是A的后继。
那对于B的这样一个子树,又是符合我们定义的子树,那就是说它有一个根结点,它有两颗子树。
在根结点和子树根之间呢,又存在一个前驱和后继的关系,那对E、F来说,它们本身又是一颗树。
对于E这棵树来说,它的数据元素只有一个,所以它是仅含有根结点的一颗子树。
在定义的时候我们说还有空树的,但是在实际使用的时候,是没有意义的。
由于我们数据结构和离散数学还是有一定的关系的,在离散数学中,为了一些数学上的完整性的定义,才有空树这样的定义,在我们数据结构中也有定义,单实际上用处不大。
这就是树的类型的一个结构特性。
下面我们本来就该讨论基本操作了,但是对于树来讲呢,还有一些基本术语介绍一下,以便我们对基本操作的理解。
下面就看有关树的基本术语。
现在先来看一下有关树的术语。
树当中,它的基本单位是一个结点:
什么叫结点呢:
数据元素+若干指向子树的分支
比如刚才我们举的那个例子,一个数据元素A+指向BCD的子树的分支,那就称一个结点。
结点的度:
结点上指向分支的个数(在树上面每个结点的度可能是不一样的,比如我们分解到只含有一个根结点的子树时,它没有子树也没有分支,那它的度就是零。
对于刚才的根结点,它的度就是3.)
整个树的度;我们定义为:
整个树当中所有结点的度的最大值。
对于我们刚才的那棵树呢,这棵树的度呢,就是3,因为,结点最大的度是3.
叶子结点:
对树来说,分解到最后,对于子树来说就一个根节点,度为零的结点。
(也就是只有一个根结点的子树。
对于这样的一个结点,是没有子树的,它对于整个树来说,是很特殊的,叫做叶子结点。
除了叶子结点,其他的结点的度都是大与零的。
)
反过来我们把它叫做分支结点:
就是那些度大于零的结点。
对于一棵树来说呢,我们经常要谈到的是,根结点,叶子结点、分支结点。
当然了,根结点也是分支结点的一种。
树呢,我们看是一个层次的结构,那从根结点,沿着分支呢,能走到任何一个结点。
从根到这个结点所经过的分支和结点,构成了一条路径。
这条路径叫从根到这个结点的路径。
在树里面还有一些术语,根我们族谱里面的术语差不多。
因为,树这样的一个结构,最早就是从族谱中的来的。
有孩子结点、双亲结点、前面我们讲到了根和子树根的关系,是父子关系,或者是双亲和孩子的关系。
对于树根来说,是树根的孩子,那么反过来,这个跟对子树根来说,它是双亲。
兄弟结点呢,是有相同的根的子树,这些子树根之间的关系呢,就是兄弟关系了。
它们有相同的双亲。
有了兄弟结点,呢我们还可以得到堂兄弟结点。
祖先结点的定义呢,我们说从根到结点有一条路径,这条路径有若干个结点,这些结点都是它的祖先。
包括它的祖父、太祖父、等这些都是它的祖先。
那子孙结点就是,在这棵根以下的结点,都是它的子孙结点。
树是一个层次的关系:
所以在树上的结点呢,它有它的层次,我们假设根结点的层次为1以下的结点呢,就依次类推了。
那也就是说第l层的结点的子树根结点的层次为l+1层。
从刚才这棵树看,A是第一层的,BCD是第二层的。
EFG是第三层,的IJ是第四层。
叶子结点最大的层次数,我们称之为树的深度。
树的深度:
树中叶子结点所在的最大层次,就是树的深度。
这里面我们要强调一下,数据结构在这个树的层次上来讲呢,有时候约定是不一样的,有的书上把根结点的层数设为0,有的设为1.我们在这设定为1.这个时候呢。
树的深度是不变的,还是最大层次数,叶子结点的层数变了,变成原来的层数减1.(在看别的书的时候,要看一下说明,如果根节点层为0的话,深度和最大的叶子节点层次数差1)
那么在数据结构中呢,树和森林是不一样的,但又是两个密切相依赖的两个概念,森林呢,是M棵互不相交树的集合。
反过来,从另外一个角度,树的定义可以由森林来定义。
就是说任何一棵非空树是一个二元组T=(root,F)都是有一个根和子树森林构成的。
(画图)比如(这样的一个树,我去掉了根结点,就可以看作是由3棵树构成的一个森林,这是一二三棵树。
这个森林加上一个根,就是一颗树。
反过来,森林又是树的集合。
这个概念我们以后也会经常用到)
下面我们看,树的基本操作。
树的基本操作比较多,我们可以分为三类进行讨论,一类是查找,一类是插入,一类是删除。
我们先看查找。
查找呢一种是特定的查找一种是按关系查找,比如我们查树的根root(T)。
或者找树上的某个结点返回它的值、或者是给一个值返回树上的这个结点。
Value(T,cur_e)。
一种是按关系的查找,有找双亲结点Parent(T,cur_e)。
取这个结点的双亲。
反过来,我们按照孩子的关系来找。
树呢,有多个孩子,以后,我们会知道,我们是根据第一个孩子,和兄弟关系来找的。
一个是每一个结点最左边的孩子,一个是每一个结点的右兄弟。
那我们看,通过找这个结点的左孩子LeftChild(T,cur_e),在找这个孩子结点的右兄弟RightSibling(T,cur_e),当把有兄弟找完之后,这个结点的孩子结点就完全找到了。
还有就是对树的特性进行的操作,一个是看树是不是为空TreeEmpty(T)。
一个是树的深度TreeDepth(T),还有一个树的重要操作呢,是树的遍历TraverseTree(T,Visit())。
以上是根查找相关的操作。
第二呢,我们看插入的操作,一,我们看初始化一个空树InitTree(&T)。
二、还有根据定义来建立一颗树CreateTree(&T,definition),这个定义呢,可以有各种给法,比如给一个root和一个森林。
或者呢,我给树上的每个结点,结点的每个孩子结点,一直到叶子结点为止,这样也可以定义一个树。
所以呢,我可以根据一个定义,创建一棵树。
三、给树的某个结点赋予一个值Assign(T,cur_e,value)。
第四个呢,插入一个孩子结点InsertChild(&T,&p,i,c)。
就是在T这棵书上,在p所指的这个结点上,插入一个c的一个子树,位置呢,由i来确定。
第三个呢,是关于删除的操作,这些操作包括,清空树ClearTree(&T)、销毁树DestroyTree(&T),把树T中p结点的第i个孩子删除,DeleteChild(&T,&p,i).
这是树的基本操作的定义。
我们讨论的树呢我们要说明一下,我们讨论的树呢,是一个有向树。
虽然我们画图的时候不画箭头,但是我们根和子树之间呢,有一个前驱和后继的关系,所以每一棵树1)有确定的根,2)树根和子树根之间有为有向的关系。
一般就叫树,但实际上,讨论的是有向树。
但是我们讨论的树和子树之间呢可以有次序,也可以无次序,子树之间是否存在次序关系,决定了我们这棵树是有序树,还是无序树。
子树之间存在次序则是有序树,子树之间不存在次序则是无序树。
我们看最早的例子,这里我们再画一颗树。
这两棵树的差别在于哪里呢,差别不在于结构,9个元素,三个棵子树。
只不过子树的次序位置变化了。
如果你讨论的是无序树,那么这两棵树是相同的,如果你讨论的是有序树,那么这两棵树就不等同,通常我们讨论的树呢,都是无序树(除了你特殊说明以外)。
因为我们树这个结构在我们非数值型程序领域,主要描述我们日常生活中的这种层次关系,也就是上下级的关系,而对同级来说呢,是不讲次序的。
因此,我们讨论的主要是无序树,那也就是说在无序树底下,这两棵树是等同的。
这个呢,我们说是有关树的一些定义。
现在,我们把树这样一个结构呢,和线性结构来比较一下,首先我们看,线性结构,它肯定存在一个没有前驱的第一个数据元素,那么在树形结构里面,也存在这一个没有前驱的元素,就是这个根结点。
这一点呢,和顺序结构是类似的。
都存在一个没有前驱的数据元素。
在线性结构里面,只有一个没有后继的线性数据元素,我们称之为最后一个元素,那么在树结构里面呢,就是度为零的结点,我们称之为叶子结点,在树里面,叶子结点就不是一个了。
而可以有多个。
其他的元素呢,在线性结构里面呢,都唯一有一个前驱,一个后继。
树中的其他结点呢,分支节点,有一个前驱,可能有多个后继。
所以我们说线性结构呢,是一种一对一的结构,而树形结构呢,是一种一对多的结构。
从根开始,它可以有多个子树根,而每一个子树根上面只有一个双亲,底下呢,可以有多个孩子结点。
一直到叶子结点呢,它没有后继。
这就是从线性结构一对一的关系,扩展到树结构1对多的关系。
以后我们会知道将树的结构再扩展到图的结构。
那么这个就是关于树的类型定义。
当然我们一般情况下,就该讨论树的实现和操作了,但是由于树的结构有它的不确定性,就是说它每个结点的度呢是可以不同的,它处理起来呢,相对来说比较麻烦一些。
在这种情况下,我们就讨论一种结构相对固定的树,也就是下面我们要将的二叉树,在以后我们会知道对树的这样一种结构我们会转化为二叉树来讨论的。
所以我们下面就要从新看一下二叉树的类型的定义。
第二个问题,二叉树的类型定义。
二叉树的定义呢,我们就不按照数据对象、和数据关系来说了,简单的看一下文字的描述就可以了,这样比较简洁。
二叉树或为空树;或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成的。
(画一个二叉树的例子)二叉树也一定有一个根结点。
除了根结点以外,其他结点分成两个互不相交的结点的集合。
每一个集合是根的子树,同时它本身又是满足定义的一颗二叉树。
二叉树的定义上有非常重要的一句话。
就是这棵二叉树叫做根的左子树。
这棵二叉树叫做根的右子树。
那么我们再看二叉树的定义,虽然每个根结点只有两棵子树,这两棵子树都有特定的含义,一个叫左子树,一个叫右子树。
当然这个左、右子树本身又可以是空树。
比如B这个二叉树,它是由一个空的左子树和一个不空的右子树组成的。
二C这个二叉树是由一个不空的左子树和空的右子树构成的。
同样对于D这棵树,它是由左右都为空的二叉树构成的。
所以从上面的定义来看呢,二叉树有五种基本形态,(画图)一种是空树,第二种是仅含有一个空节点的树、第三种是左子树不空,右子树为空的树第四种是右子树不空,左子树为空的树,第五种那就是左右子树都不空的树。
左子树为空和右子树为空这两个概念是不同的,不能完全等同,这与我们树里面的有序无序树的情况是不同的。
比如有序树,只有一颗子树(画图),对于二叉树来说没有这样的二叉树。
对于二叉树来说,你必须明确到底是左子树空,还是右子树空。
这一点是很重要的概念,在以后我们讲树的转化的时候呢,我们就会体会到左右的重要性了。
二叉树的基本操作呢,跟树一样,我们也分查找、插入、删除三种来看。
查找分特定的查找,比如说找根,差值为e的某个节点。
也可以按关系来查找,找这个元素的双亲,找结点的左孩子(也就是左子树根),右子树根。
如果本身是左子树根,那它就存在右兄弟。
如果它本身就是右子树根,那它可能存在左兄弟。
还有一些对树的状态的一些操作,比如判树是不是空树,求二叉树的深度。
对于二叉树呢,还有四种遍历的操作。
插入:
初始化、改变二叉树上某个结点的值、根据一个定义生成一个二叉树,比如给出一个根,一个左子树,一棵右子树,我们可以构造一个二叉树。
插入,在某个结点上插入一颗以C为根结点的二叉树。
插入的位置可以是左子树也可以是右子树。
删除:
把二叉树清空,销毁二叉树、还有删除某个结点的一颗左或右子树。
一般没有删除一个节点的操作,和树也一样,要删就删除一颗子树。
二叉树是非常重要的,因为它的结构比较固定,因而有一些重要的特性;我们现在来看一下:
性质1:
在二叉树的第i层上至多有2i-1个结点(i>=1).
怎么证明呢,我们用归纳法:
(画图)。
I=1的时候,显然成立,只有一个根结点。
2的零次方等于1.我们现在假设i在第k层满足这样的条件就是i=k时,它的结点数呢,满足最多也就是2k-1个。
那当i=k+1时,由于这一层的结点是上一层结点的子树根。
每一个结点最多有两个子树根。
那在i=k+1层,结点数最多也就是上一层结点数×2.就是2k-1*2=2k=2(k+1)-1
性质2:
它是说,深度为h的二叉树。
它的结点数最多为2h-1。
深度为h的二叉树呢共有h层,我们让每一层取得结点数最多。
看一看h曾最多有多少。
从第一层20+21+22+。
。
。
+2h-1=2h-1(等比数列的求和公式)。
所以深度为k的二叉树上至多还有2k-1。
这个性质是由性质1得到的。
性质3:
对于任何一颗二叉树,如果它含有n0个叶子节点。
n2个度为2的结点。
那么它必然存在一个关系式:
n0=n2+1.(二叉树上的节点只有三种,有多少个度为1的结点,度为0的结点和度为2的结点一定满足这样的关系。
(画图,假定二叉树上度为零的结点是n0.)度为1的结点的个数是n1.度为2的结点个数为n2。
那么总的和肯定是二叉树上总的结点数目n=n0+n1+n2,如果二叉树上分支的数目等于b的话,我们分支的数目和节点的数目的关系是什么呢?
(画图说明)对于二叉树的结点来说,除了根结点,其他的结点都能找到它的双亲,有一个双亲说明有一个分支,那意味着结点数比分支数多了一个,也就是n=b+1。
那么我们看这些分支是谁产生的呢,我们反过来看,度为1的结点产生一个分支,度为2的结点产生两个分支。
度为零的结点不产生分支。
因此b=2n2+n1那n=2n2+n1+1)。
这样我们就得到了两个式子,一个是n=n0+n1+n2这是从结点的度的类型这个方面来看。
而第二式子则表明了这些所有节点n和分支数目的关系,而这个分支数目是度为1和度为2的结点产生的。
因此,把上面两个式子联立一下,相减:
得到n0-1-n2=0。
这就是n0=n2+1。
那这个式子的意思就是,不管二叉树上有多少个度为1的结点,度为零的结点和度为2的结点存在着这样一个关系。
后面两种重要特性呢,涉及到两种特殊的树。
一种叫满二叉树:
它指的是深度为k且含有2k-1个结点的二叉树。
那也就是说什么是满二叉树,那就是说这个二叉树上面不存在度为1的结点。
而且除了叶子结点以外,每个结点都有两棵子树。
而且只有最后一层是叶子结点。
其他都是分支结点。
就是每一层都取它最大的结点数。
那么就是一个满二叉树。
对于满二叉树,我们可以从上到下,从左到右这样进行编号,进行编号以后呢,我们就引出了完全二叉树的概念:
树中所含有的n个结点和满二叉树中编号为1至n的结点一一对应。
下面我们画一个图来表示。
这是一棵满二叉树、我对它进行编号,从1到15.。
什么是完全二叉树呢,就是说如果完全二叉树有5个结点。
那么这五个结点应该和满二叉树的1到5个结点对应。
如果有6个结点、7个结点。
那也就是说完全二叉树有这样一个特性,上面每一层都是满二叉树。
只有最后一层不满。
而且不满也是按照顺序从左到右的依次出现。
完全二叉树,在以后的应用中呢,是经常会用到的,所以对于完全二叉树有两个重要的特性。
(如一个节点和编号10对应而是和编号11对应了)
性质4:
具有n个结点的完全二叉树的深度为logn』+1。
我们看这个的证明。
(画图)
假定这个完全二叉树的深度是k。
那么它的节点数最大不会超过2k-1,最小呢一定大于深度为k-1的满二叉树,因为你至少的在深度为k的这一层有一个结点。
即2k-1-1 就是2k-1<=n<2k这样,我们给这个不等式两边取对数。 k-1<=log2n Log2n这个值不一定是整数,它一定是小于k的,但是它可以达到k-1.或者大于k-1。 那就是说我取logn的下整就等于k-1.反过来,深度k=logn』+1。 那么这个性质就得到了证明即: 具有n个结点的完全二叉树的深度为logn』+1。 当然你也可以取上整,这是由2个不等式得到的。 下面是完全二叉树的另外一个特性: 这个特性非常长,但是内容呢,非常简单。 就是对于完全二叉树上的任意一个结点,和它的双亲、左右子树也就是孩子之间呢,编号呢,含有一定的关系。 若对含n个结点的二叉树从上到下且从左至右进行1至n的编号,则对二叉树中任意一个编号为i的结点: (1)若i=1,则该结点是二叉树的根,无双亲, 否则,编号为 的结点为其双亲结点; (2)若2i>n,则该结点无左孩子, 否则,编号为2i的结点为其左孩子结点; (3)若2i+1>n,则该结点无右孩子结点, 否则,编号为2i+1的结点为其右孩子结点。 下面我们就来证明这三个特性,我们先看对于编号为i的结点如果左孩子存在的话,一定是编号为2i,如果右孩子存在的话一定是2i+1.我们看对于i=1的时候,我们可以看到如果有左右孩子的话,(画图)一定是2i和2i+1。 现在我们看一般的情况,对某一层,假设为第k层某一个结点的编号。 对于完全二叉树来说,也就是说前面k-1层是满的。 这个k-1层结点的个数呢,是2的k-1次方减1.因此这个节点的编号一定是2的k-1次方。 下面,我们看它的下一层,这意味着前面k层的个数是满的,一定是2的k次方减1.也就是说这个结点的编号是2的k次方。 那么它的兄弟结点呢,一定是2的k次方加1.那么就是说,如果这两个结点存在的话,也就是说2的k次方加1小于n的话,那么这个就成立的。 我们用归纳法,对于第i个结点满足这个关系,就是I左孩子是2i,右孩子是2i+1.那么我们看它的兄弟,它的兄弟呢,编号一定是i+1.它的兄弟的左孩子的编号,显然是这个2i+1结点紧挨着的下一个编号。 也就是2i+1的堂兄弟应该是2i+2,它的右孩子呢,应该是2i+3.2i+2=2(i+1),2i+3=2(i+1)+1所以呢我们这个假设就是成立的,由归纳证明就可以得到。 那反过来由这个关系我们很容易得到,如果这个结点的编号是i的话,那它的双亲就是i/2。 那如果这个结点是i的话,那么他的双亲就是i/2取下整。 这个关系呢,是我们以后经常会用到的。 关于二叉树的概念呢,我们就讲到这里。 下面我们看一下,二叉树的存储结构。 二叉树有各种存储表示法,第一种呢,叫二叉树的顺序存储表示。 我们用C语言来描述它,就是把二叉树的这个结点呢,存储在一维数组中间。 这个一维数组的最大值呢,我们设定为100.二叉树结点的个数呢,由具体的二叉树的结点个数来定。 那么如何把这个层次的关系、左右子树的关系用一个一维数组来表示它呢。 我们知道一维数组就存储ABCDEF这样的结点。 我们知道顺序存储结构仅仅存储的这些ABCDEF结点,而不存储他们之间的关系,他们的关系用固定的的一个位置上的相邻来表示。 如果我们把这棵树看成是满二叉树或完全二叉树的一部分。 那也就是说把根结点放在一维数组的第一个分量里面,编号为1.的话,那么BD就应该是2.3.。 这样的话,我们用含有六个元素的二叉树呢,我们用一个14个分量的一维数组就可以完全表示了。 如下图所示: 那么也就是说为了表示这样一个具体的二叉树的结点呢,每个结点不是挨着存储。 而是按照它的编号是多少而存在相应的数组分量里面。 显然,这种存储方式呢,仅适合与完全二叉树。 因为对于完全二叉树来说,前面的元素都是满的。 而这个二叉树呢,为了把这个树的左右关系表示出来,我们必须空出很多的空间,所以就很浪费空间了。 因此,对于任意的一个二叉树呢,我们不用这样的存储方式。 但是对于完全二叉树呢,用这一种方式是相当方便的。 这是第一种顺序存储表示。 由于二叉树有两个后继,我们经常的用两个指针指向它的后继,下面呢,我们就看看二叉树的链式存储表示。 二叉树的链式存储表示,由于结点的不同,可以有各种的存储表示方法。 其中最简单的是二叉链表,所谓二叉链表,就是二叉树的结点里面含有两个指针域,一个数据域。 整个树呢,我们就用指向根结点的指针就可以表示了。 我们简单的画一棵二叉树。 (画图)每个结点呢,有两个指针域,左边的指示它左子树的根,右边的指示它右子树的根,对A来说,它的左子树根是B,B的左子树根为空,右子树根是C。 而C是叶子结点。 叶子结点的指针为空,整个二叉树用指向根结点的一个指针就可以表示了。 每个结点呢,都有指向左子树和指向右子树的根,那它的双亲关系呢,是当我找到这个结点是某一个结点的左子树或右子树的话,那反过来这个结点就是这个结点的双亲,所以双亲的信息,我们也包含着,只是是一个隐含的信息,而不是显著的。 那么如果某些情况下你想把双亲结点的信息表示出来的话,那么很简单,我们就在指针域里面加一个指针,加一个指针域指向它的双亲,那么根结点的双亲域显然是空的,B的双亲是A,这个结点双亲也是A,这个结点双亲是B。 这样的话结点里面有三个指针了,我们把这就叫做三叉链表。 三叉链表和刚才二叉链表的差别呢,仅仅是多设了一个指针域。 整个二叉树呢,还是由指向根结点的一个指针来表示了。 那么我们可以只指示左右子树,隐含着双亲信息,反过来我们也可以仅仅表示双亲信息,让左右子树的信息隐含在内,来表示这个二叉树。 但是对于二叉树来说,它的子树根呢,一定是有左右之分的。 因此如果只含有双亲信息的话,表示是不完备的。 那么这个结点呢我们就用一个数据域,指向双亲的指针,和左右孩子标志域来表示。 整个二叉树呢,我们是把这些所有的结点放在一个一维数组里面来表示的。 加上结点的数目,和根结点的位置,就形成了这样二叉树的一个表示方法。 这个表示方法,我们称之为双亲链表。 例如我们对刚才这棵二叉树,我们有四个结点ABCD,每个结点呢,在数组里面有一个下标,结点本身的有一个数据域,还有一个双亲域,这个双亲域我们不是给出双亲结点的数据,而是给出他的双亲结点在这个一维数组里面所在的位置,它是在零的分量里面,所以它的双亲结点就是零。 同时B呢是A的左孩子,D是A的右孩子。 C呢,是B的右孩子,C的双亲就是1。 用-1来表示没有双亲。 那么整个二叉树呢,是用这样一个结点类型的一个一维数组来表示的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉 教案