完全二叉树总结点数与叶结点数关系分析讲义
思路2:
将完全二叉树的结点按层序(从上到下,从左到右)从1开始编号, 则N个结点的完全二叉树中,最后一个结点的编号为N。根据完 全二叉树的性质,编号为N的结点的父结点编号为[N/2]([N/2] 表示的是N/2的整数部分) 如下图:
结论: 叶结点个数为总结点数减 去分支结点个数,而最后 结点的父结点为最末一个 分支结点,所以叶结点个 N 数n0=N-[N/2]。
问题分析
思路1:
先用归纳的方法找出完全二叉树中度为1的结点个数n与总结 点数N的关系。下面给出结点数N=1,2,3,4⋯的完全二叉树 如下图:
N=1 n1=0
N=1 n2=1
N=1 n3=0
N=1 n4=1
通过观察不难发现度为1的结点个数n1=0,1,0,1.. 即:当N为奇数时n1=0;当N为偶数时n1=1-------------------------------(1) 二叉树总结点数N可以表示为:N=n0+n1+n2------------------------------(2) 且N=二叉树分支数+1 二叉树分支数=0*n0+1*n1+2*n2, 故N=(0*n0+1*n1+2*n2)+1--------------------------------------------------------(3) 由(2)(3)式,可得:n0=n2+1-----------------------------------------------------(4) 由(2)(4)式,可得:N=n0+n1+(n0-1) ------------------------------------------(5) 综合(1)(5),得如下结论: 当N为奇数时,N =n0+0+(n0-1),n0=(N奇+1)/2; 当N为偶数时,N =n0+1+(n0-1),n0=N偶/2。
[N/2]
N为偶数
[N/2]
[N-1]
N
N为奇数
谢谢观看
完全二叉树总结点数与叶结点数关 系分析
学号:140120010224 班级:软件工程八班 姓名:邢继芳
目录
1
二叉树的定义
2
完全二叉树的定义
3
完全二叉树的性质
4
问题分析
二叉树的定义
定义: 二叉树( Binary Tree)是 n (n ≥0)个结点的有限集,
它或为空,或满足:
(1) 有一个特定的结点——根结点;
• 叶子只可能出现在最后两层;
• 若结点右子树深度为d ,左子树深度为d或 d+1
理想平衡树——除最后一层外,其余层满;最后一层点分 布任意;
1
1
2
3
2
3
4 56 7
满二叉树
456
完全二叉树
完全二叉树的性质
① 有n 个结点的完全二叉树, 其深度为:⌊log2n⌋+1 或为 ⌊log2(n+1)⌋ 证明:由性质2,若完全二叉树深度为h,应有: (深度h-1的满二叉树结点数) < n ≤(深度h的满二叉树结点数) 即:2h-1-1 < n ≤ 2h-1 或: 2h-1≤ n < 2h
② 对完全二叉树中n个结点从上到下,每层从左到右 从0开始顺序编号,则有: a. 若2i≤ n,则 i的左孩子序号为 2i,否则 i为叶子; b. 若2i+1≤ n,则 i的右孩子序号为 2i+1,否则 i无右孩子; c. 若结点编号 i >0,则其双亲序号为 ⌊i/2⌋。 d. 若结点编号 i =1,则结点i为二叉树的根,无双亲。
(2) 其余结点分为不相交的两个子集:
L——根的左子树
R——根的右子树
与一般树的不同: • 每个结点的度≤ 2; • 子树有左、右之分,不能互换
例如: A
B
C
EF
G
L
R
完全二叉树的定义
定义:二或为满,或缺少右边若干连续结点:
• 除最后一层,第 i层有2i-1个结点;
数据结构二叉树PPT课件
A
B
CX
E FGH I
J
8
四. 基本名词术语
1. 结点的度:该结点拥有的子树的数目。
2. 树的度:树中结点度的最大值。
3. 叶结点:度为0 的结点. 4. 分支结点: 度非0 的结点. 5. 层次的定义: 根结点为第一层,若某结点在第i 层,
则其孩子结点(若存在)为第i+1层.
A
第1层
B
CX
第2层
12
完全二叉树.
三.i 层最多有2i–1个结点(i1)。
2. 深度为h 的非空二叉树最多有2h -1个结点.
3. 若非空二叉树有n0个叶结点,有n2个度为2的结点,
则
n0=n2+1
4. 具有n个结点的完全二叉树的深度h=log2n+1.
13
二叉树的存储结构
39
例
A
BC D
E F GH I
对树进行先根遍历,获得的先根序列是: ABEFCDGHI
对树进行后根遍历,获得的后根序列是: EFBCGHIDA
40
2.森林的遍历
先序遍历(对森林中的每一棵树进行先根遍历)
1)若森林不空,访问森林中第一棵树的根结点; 2)先序遍历森林中第一棵树的子树森林; 3)先序遍历森林中(除第一棵树外)其余树构成的森林。
(空) 根 根 根
根
左 子 树
右 子 树
左 子 树
右 子 树
11
二. 两种特殊形态的二叉树
1. 满二叉树
若一棵二叉树中的结点, 或者为叶结点, 或者具有两 棵非空子树,并且叶结点都集 中在二叉树的最下面一层.这 样的二叉树为满二叉树.
2.完全二叉树
若一棵二叉树中只有最下 面两层的结点的度可以小于2, 并且最下面一层的结点(叶结 点)都依次排列在该层从左至 右的位置上。这样的二叉树为
第7章-树和二叉树第2讲-二叉树的概念
第一层
树的特 点?
第二层 第三层 第四层
复习:二、树的基本术语
1.结点A、D的度?树的度? 2;3;3; 2.根结点?分支结点?叶子结点? A;BCDE;GHIJF;
在二叉链中,空指针的个数?
b A
B∧
C
∧D
∧E∧
∧F∧
∧G∧
n个结点 2n个指针域 分支数为n-1 非空指针域有n-1个 空指针域个数 = 2n-(n-1) = n+1
n=7 空指针域个数=8
39/10
40/10
二叉树
当n=3,结果为ห้องสมุดไป่ตู้。
第n个Catalan数
41/23
有n个结点并且高度为n的不同形态的二叉树个数是多少? 该二叉树:有n层,每层一个结点,该结点可以
43/23
结点个数为n,树形可以唯一确定 叶子结点个数为n0,树形不能唯一确定 n为奇数时,n1=0; n为偶数时,n1=1。 n0=n2+1 高度h= log2(n+1),是n个结点高度最小的二叉树
44/23
含有60个叶子结点的二叉树的最小高度是多少?
在该二叉树中,n0=60,n2=n0-1=59,n=n0+n1+n2=119+n1。 当n1=0且为完全二叉树时高度最小。 此时高度h=log2(n+1)= log2120=7。
作为双亲结点的左孩子,也可以作为右孩子 这样的二叉树的个数=1×2×…×2=2n-1。
例如,当n=3时有22=4个这样的二叉树。
完全二叉树节点和叶子节点关系
完全二叉树节点和叶子节点关系完全二叉树是一种特殊的二叉树,它的每一层都是满的,除了最后一层,最后一层的节点从左到右排列。
在完全二叉树中,节点和叶子节点之间有着特殊的关系,本文将从定义、性质和应用三个方面来探讨完全二叉树节点和叶子节点的关系。
一、定义完全二叉树是一种特殊的二叉树,它的每一层都是满的,除了最后一层,最后一层的节点从左到右排列。
完全二叉树的定义可以用递归的方式来描述:如果一棵二叉树为空,则它是一棵完全二叉树;如果一棵二叉树的左子树是一棵满二叉树,右子树是一棵完全二叉树,并且左子树的高度等于右子树的高度或者右子树的高度比左子树的高度少1,则这棵二叉树是一棵完全二叉树。
二、性质完全二叉树的节点和叶子节点之间有着特殊的关系,具体来说,完全二叉树的节点数为2^h-1,其中h为完全二叉树的高度。
叶子节点的数量为2^(h-1),也就是说,完全二叉树的叶子节点占据了整个树的一半以上。
完全二叉树的节点和叶子节点之间还有一个重要的性质,就是叶子节点的编号从1到2^(h-1)连续排列,而非叶子节点的编号从2^(h-1)+1到2^h-1连续排列。
这个性质在完全二叉树的应用中非常重要,可以用来快速定位节点和叶子节点的位置。
三、应用完全二叉树的节点和叶子节点关系在算法和数据结构中有着广泛的应用。
其中最常见的应用是堆,堆是一种特殊的完全二叉树,它有两种形式:最大堆和最小堆。
最大堆的每个节点都大于等于它的子节点,最小堆的每个节点都小于等于它的子节点。
堆的应用非常广泛,比如在排序算法中,堆排序是一种高效的排序算法,它的时间复杂度为O(nlogn)。
除了堆之外,完全二叉树的节点和叶子节点关系还可以用来实现哈夫曼树,哈夫曼树是一种用于数据压缩的树形结构,它的叶子节点代表着数据中的字符,而非叶子节点代表着字符出现的频率。
哈夫曼树的构建过程中需要用到完全二叉树的节点和叶子节点关系,可以快速定位叶子节点的位置,从而实现高效的数据压缩。
树与二叉树h
SBNode nodes[MAXSIZE]; } SBTree;
举例
结点 左子
右子
1
26 34
1
2
6
2
3
4
3
0
4
4
0
0
4
4
0
0
特点:
6
0
0
找子方便,找父 结点不便.
三、二叉链表存储结构
第一层 第二层
( A ( B ( E (K,L),F),C(G),D( H (M),I,J )))
第四层 第三层
二、基本术语
结点:包括一个数据元素及若干个指向其它子树 的分支;例如,A,B,C,D等。
叶结点:无后件结点为叶结点;如K,L,M。 根结点:无前件的结点为根;例如,A结点。
子结点:某结点后件为该结点的子结点;例如,
方法描述: 从根结点a开始访问, 接着访问左子结点b, 最后访问右子结点c。
即:
根
A 访问根结点 B 先序遍历左子树 C 先序遍历右子树
a
左子 右子
bc
二、中序法(InOrder)
方法描述:
从左子结点b开始访问,
接着访问根结点a,
最后访问右子结点c。
即:
根
A 中序遍历左子树 B 访问根结点 C 中序遍历右子树
计算机学院
自动化学院
各种社会组织机构;
在计算机领域中,用树表示源
程序的语法结构;
2101 2102
2103
在OS中,文件系统、目录等组
织结构也是用树来表示的。
数据结构之二叉树(BinaryTree)
数据结构之⼆叉树(BinaryTree)⽬录导读 ⼆叉树是⼀种很常见的数据结构,但要注意的是,⼆叉树并不是树的特殊情况,⼆叉树与树是两种不⼀样的数据结构。
⽬录 ⼀、⼆叉树的定义 ⼆、⼆叉树为何不是特殊的树 三、⼆叉树的五种基本形态 四、⼆叉树相关术语 五、⼆叉树的主要性质(6个) 六、⼆叉树的存储结构(2种) 七、⼆叉树的遍历算法(4种) ⼋、⼆叉树的基本应⽤:⼆叉排序树、平衡⼆叉树、赫夫曼树及赫夫曼编码⼀、⼆叉树的定义 如果你知道树的定义(有限个结点组成的具有层次关系的集合),那么就很好理解⼆叉树了。
定义:⼆叉树是n(n≥0)个结点的有限集,⼆叉树是每个结点最多有两个⼦树的树结构,它由⼀个根结点及左⼦树和右⼦树组成。
(这⾥的左⼦树和右⼦树也是⼆叉树)。
值得注意的是,⼆叉树和“度⾄多为2的有序树”⼏乎⼀样,但,⼆叉树不是树的特殊情形。
具体分析如下⼆、⼆叉树为何不是特殊的树 1、⼆叉树与⽆序树不同 ⼆叉树的⼦树有左右之分,不能颠倒。
⽆序树的⼦树⽆左右之分。
2、⼆叉树与有序树也不同(关键) 当有序树有两个⼦树时,确实可以看做⼀颗⼆叉树,但当只有⼀个⼦树时,就没有了左右之分,如图所⽰:三、⼆叉树的五种基本状态四、⼆叉树相关术语是满⼆叉树;⽽国际定义为,不存在度为1的结点,即结点的度要么为2要么为0,这样的⼆叉树就称为满⼆叉树。
这两种概念完全不同,既然在国内,我们就默认第⼀种定义就好)。
完全⼆叉树:如果将⼀颗深度为K的⼆叉树按从上到下、从左到右的顺序进⾏编号,如果各结点的编号与深度为K的满⼆叉树相同位置的编号完全对应,那么这就是⼀颗完全⼆叉树。
如图所⽰:五、⼆叉树的主要性质 ⼆叉树的性质是基于它的结构⽽得来的,这些性质不必死记,使⽤到再查询或者⾃⼰根据⼆叉树结构进⾏推理即可。
性质1:⾮空⼆叉树的叶⼦结点数等于双分⽀结点数加1。
证明:设⼆叉树的叶⼦结点数为X,单分⽀结点数为Y,双分⽀结点数为Z。
计算机二级公共基础专题探究——二叉树
公共基础专题探究——二叉树1.6 树与二叉树树是一种简单的非线性结构,所有元素之间具有明显的层次特性。
在树结构中,没有前件的结点只有一个,称为树的根结点,简称树的根。
每一个结点可以有多个后件,称为该结点的子结点。
没有后件的结点称为叶子结点。
在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。
为该结点的左子树与右子树。
二叉树的基本性质:必考的题目(1)在二叉树的第k层上,最多有2k-1(k≥1)个结点;(2)深度为m的二叉树最多有2m-1个结点;(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;(4)二叉树中 n = n0 +n1 +n2k层上有2k-1个结点深度为m的满二叉树有2m-1个结点。
若干结点。
二叉树的遍历:(一般画个图要你把顺序写出来)后序遍历(访问根结点在访问左子树和访问右子树之后)重点题型:二叉树的遍历例1:某二叉树的前序序列为ABCD,中序序列为DCBA,则后序序列为(DCBA )。
【解析】前序序列为ABCD,可知A为根结点。
根据中序序列为DCBA可知DCB是A的左子树。
根据前序序列可知B是CD的根结点。
再根据中序序列可知DC是结点B的左子树。
根据前序序列可知,C是D的根结点,故后序序列为DCBA例2:对下列二叉树进行前序遍历的结果为 ABDYECFXZ例3:设二叉树如下,则后序序列为 DGEBHFCA【解析】本题中前序遍历为ABDEGCFH,中序遍历为DBGEAFHC,后序遍历为DGEBHFCA完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后堆排序问题:例1:已知前序序列与中序序列均为ABCDEFGH,求后序序列【解析】设根节点为D≠0,左子树为L,右子树为R,有遍历顺序为:前:D-L-R 已知ABCDEFGH中:L-D-R 已知ABCDEFGH后:L-R-D 待求由此可知,L=0,D-R= ABCDEFGH故R-D=HGFEDCBA,即后序序列= HGFEDCBA变式训练1:已知后序序列与中序序列均为ABCDEFGH,求前序序列答案:HGFEDCBA,(这次R=0)结论:若前序序列与中序序列均为某序列,则后序序列为该序列的倒序,且为折线;同样地,若后序序列与中序序列均为某序列,则前序序列为该序列的倒序,且为折线例2:已知前序序列=ABCD,中序序列=DCBA,求后序序列【解析】设根节点为D≠0,左子树为L,右子树为R,有遍历顺序为:前:D-L-R 已知ABCD中:L-D-R 已知DCBA后:L-R-D 待求因为ABCD与DCBA正好相反,由此可知,R=0所以D-L=ABCD,即L-D=DCBA所以后序序列= DCBA变式训练2-1:中序序列=BDCA,后序序列=DCBA,求前序序列【解析】设根节点为D≠0,左子树为L,右子树为R,有遍历顺序为:前:D-L-R 待求中:L-D-R 已知BDC,A后:L-R-D 已知DCB,A通过观察可知,R=0,L={B,D,C},D=A中、后变换时,{B,D,C}发生了变化,说明左子树结构特殊,进一步令中’:L’-D’-R’已知B,DC后’:L’-R’-D’已知DC,B可知L’=0,即D’=B,R’= DC可以画出二叉树示意图为:Array所以前序序列= ABCD变式训练2-2:中序序列=ABC,后序序列=CBA,求前序序列【解析】设根节点为D≠0,左子树为L,右子树为R,有遍历顺序为:前:D-L-R 待求中:L-D-R 已知ABC后:L-R-D 已知通过观察可知,L=0,D-R=ABC,R-D=CBA所以前序序列=D-L-R= D-R=ABC变式训练2-3:前序序列=ABC,中序序列=CBA,求后序序列【解析】设根节点为D≠0,左子树为L,右子树为R,有遍历顺序为:前:D-L-R 已知A,BC中:L-D-R 已知CB,A后:L-R-D 待求通过观察可知,D=A ,L={B,C},R=0所以后序序列=CBA (一边偏)题型二:求二叉树的深度。
数据结构——- 二叉树
证明: 5.1 二叉树的概念
(1)总结点数为 ●二叉树的主要性质 n=n0+n1+n2 (2)除根结点外,每个 ●性质3: 结点都有一个边e进入 任何一棵二叉树,若其终端结点数为n0, n=e+1 度为2的结点数为n2,则n0=n2+1 (3)边e又是由度为1或2 A 的点射出,因此 e=n1+2n2 G B (4)由(2)(3) F C D n=n1+2n2+1 (5)由(4)-(1)可得 G n0=n2+1
《数据结构与算法》
★★★★★
第五章 二叉树
廊坊师范学院 数学与信息科学学院
树型结构--实例:五子棋
A
B
D
E
F
C
…...........
…...........
第五章 二叉树
本章重点难点
重点: 二叉树的定义,性质,存储结 构以及相关的应用——遍历,二叉搜 索树,堆优先 队列,Huffman树等 难点: 二叉树的遍历算法及相关应用
证明: 5.1 二叉树的概念
(1)总结点数为 ●二叉树的主要性质 n=n0+n1+n2 (2)除根结点外,每个 ●性质3: 结点都有一个边e进入 任何一棵二叉树,若其终端结点数为n0, n=e+1 度为2的结点数为n2,则n0=n2+1 (3)边e又是由度为1或2 A 的点射出,因此 e=n1+2n2 G B (4)由(2)(3) F C D n=n1+2n2+1 (5)由(4)-(1)可得 G n0=n2+1
A B C E D F G
证明: 由性质4可推出
由性质2(深度为k的 二叉树,至多有2k+1-1 个结点)可知,高度 为h(k+1)的二叉树,其 有n (n>0)个结点的完全二叉树的高度为 结点个数n满足: 「log2(n+1) ,深度为「log2(n+1) -1 2h-1-1<n<=2h-1 高度:二叉树中最大叶结点的层数+1 2h-1<n+1<=2h 取对数得到: 0层 1 h-1<log2(n+1)<=h 3 1层 2 因为h是整数,所以 h= log2(n+1) 5 2层 4
树和二叉树的基本知识
树和二叉树的基本知识树是一种非线性的数据结构,用它能很好地描述有分支和层次特性的数据集合。
树型结构在现实世界中广泛存在,如把一个家族看作为一棵树,树中的结点为家族成员的姓名及相关信息,树中的关系为父子关系,即父亲是儿子的前驱,儿子是父亲的后继;把一个国家或一个地区的各级行政区划分看作为一棵树,树中的结点为行政区的名称及相关信息,树中的关系为上下级关系,如一个城市包含有若干个区,每个区又包含有若干个街道,每个街道又包含有若干个居委会;把一本书的结构看作是一棵树,树中的结点为书、章、节的名称及相关信息,树中的关系为包含关系。
树在计算机领域中也有广泛应用,如在编译系统中,用树表示源程序的语法结构;在数据库系统中,树型结构是数据库层次模型的基础,也是各种索引和目录的主要组织形式。
在许多算法中,常用树型结构描述问题的求解过程、所有解的状态和求解的对策等。
在树型结构中,二叉树是最常用的结构,它的分支个数确定,又可以为空,具有良好的递归特性,特别适宜于程序设计,因此我们常常将一般树型结构转换成二叉树进行处理。
第一节树一、树的定义一棵树(tree)是由n(n>0)个元素组成的有限集合,其中:1.每个元素称为结点(node);2.有一个特定的结点,称为根结点或树根(root);3.除根结点外,其余结点被分成m(m>=0)个互不相交的有限集合T0,T1,T2,……T m-1,而每一个子集T i又都是一棵树(称为原树的子树subtree)。
图1图1就是一棵典型的树结构。
从树的定义可以看出:1.树是递归定义的,这就决定了树的操作和应用大都是采用递归思想来解决;2.一棵树中至少有1个结点,这个结点就是根结点,如上图中的结点1;3.只有根结点没有前趋结点,其余每个结点都有唯一的一个前趋结点;4.所有结点都可以有0或多个后继结点;二、树的基本概念下面以图1为例给出树结构中的一些基本概念:1.一个结点的子树个数,称为这个结点的度(degree),如结点1的度为3,结点3的度为0。
二叉树知识整理
⼆叉树知识整理1.1.树的定义树是由结点或顶点和边组成的(可能是⾮线性的)且不存在着任何环的⼀种数据结构。
没有结点的树称为空(null或empty)树。
⼀棵⾮空的树包括⼀个根结点,还(很可能)有多个附加结点,所有结点构成⼀个多级分层结构。
特点:树状图是⼀种数据结构,它是由n(n>=0)个有限结点组成⼀个具有层次关系的集合。
把它叫做“树”是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。
它具有以下的特点:每个结点有零个或多个⼦结点;没有⽗结点的结点称为根结点;每⼀个⾮根结点有且只有⼀个⽗结点;除了根结点外,每个⼦结点可以分为多个不相交的⼦树;种类:⽆序树:树中任意节点的⼦结点之间没有顺序关系,这种树称为⽆序树,也称为⾃由树;有序树:树中任意节点的⼦结点之间有顺序关系,这种树称为有序树;⼆叉树:每个节点最多含有两个⼦树的树称为⼆叉树;完全⼆叉树:在⼀棵⼆叉树中,除最后⼀层外,若其余层都是满的,并且最后⼀层或者是满的,或者是在右边缺少连续若⼲节点,则此⼆叉树为完全⼆叉树。
满⼆叉树:⼀棵深度为i,且有2i-1个节点的⼆叉树,称为满⼆叉树。
霍夫曼树:带权路径最短的⼆叉树称为哈夫曼树或最优⼆叉树;1.2.⼆叉树相关术语1) 节点的度:⼀个节点含有的⼦树的个数称为该节点的度;2) 叶节点或终端节点:度为0的节点称为叶节点;3) ⾮终端节点或分⽀节点:度不为0的节点;4) 双亲节点或⽗节点:若⼀个节点含有⼦节点,则这个节点称为其⼦节点的⽗节点;5) 孩⼦节点或⼦节点:⼀个节点含有的⼦树的根节点称为该节点的⼦节点;6) 兄弟节点:具有相同⽗节点的节点互称为兄弟节点;7) 树的度:⼀棵树中,最⼤的节点的度称为树的度;8) 节点的层次:从根开始定义起,根为第1层,根的⼦节点为第2层,以此类推;9) 树的⾼度或深度:树中节点的最⼤层次;10) 堂兄弟节点:双亲在同⼀层的节点互为堂兄弟;11) 节点的祖先:从根到该节点所经分⽀上的所有节点;12) ⼦孙:以某节点为根的⼦树中任⼀节点都称为该节点的⼦孙。
树和二叉树知识考点整理
树和二叉树知识考点整理●树的基本概念●树的定义●n个结点的有限集●n=0代表空树●满足条件●只有一个根的结点●其余结点是互不相交的有限集,每个集合本身是一棵树,是根的子树●树是一种递归的数据结构●树的根结点没有前驱,其余结点只有一个前驱●树中所有结点可以有零个或多个后驱●基本术语●双亲、兄弟、孩子、祖先●度:孩子个数●分支结点:度大于0●叶子结点:度为0●深度:从下往上;●高度:从上往下;●有序树:从左到右是有次序的●路径和路径长度:路径是从上往下的●森林:m棵互不相交的树的集合。
●树的基本性质●结点数=所有结点度数之和+1●度为m的树中第i层上至多有m的i-1次分个结点●高度为h的m叉树至多有(m^h-1)/(m-1)个结点●具有n个结点的m叉树的最小高度为「logm(n(m-1)+1)]●二叉树的概念●定义●一种树形结构,特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点)并且二叉树的子树有左右之分,次序不可颠倒●二叉树与度为2的有序树区别●度为2的可以有三个结点,二叉树可以是空树●度为2的有序树的孩子左右之分是根据另一个孩子而言的;二叉树无论有没有,都要确定左右●特殊的二叉树●满二叉树●树中每一层都含有最多的结点●完全二叉树●高度为h,有n个结点的二叉树,当且仅当,每个结点都与高度为h的满二叉树中的编号一一对应●二叉排序树●用途:可用于元素的排序、搜索●左子树上所有结点的关键字均小于根结点的关键字;右子树上所有结点的关键字均大于根结点的关键字;左子树和右子树又是一棵二叉排序树●二叉树的性质●非空二叉树上的叶子结点数等于度为2的结点树加1,即n0=n2+1●非空二叉树上第k层至多有2^(k-1)个结点●高度为h的二叉树至多有2^h-1个结点●具有n个结点的完全二叉树的高度为log2(n+1)取顶或者log2n取底+1●二叉树的存储结构●顺序存储结构●只适合存储完全二叉树,数组从0开始●链式存储结构●顺序存储的空间利用率太低●至少三个指针域:数据域、左指针域、右指针域●增加了指向父结点后,变为三叉链表的存储结构●在含有n个结点的二叉链表中,含有n+1个空链域●二叉树的遍历和线索二叉树●二叉树的遍历●先序遍历●根左右●应用:求树的深度●中序遍历●左根右●后序遍历●左右根●应用:求根到某结点的路径、求两个结点的最近公共祖先等●三个遍历时间复杂度都是O(n)●递归算法和非递归算法的转换●层次遍历●需要借助队列●步骤●二叉树根结点入队,然后出队,访问出队结点,若有左子树,左子树根结点入队●遍历右子树,有右子树,右子树根结点入队。
