辅导07 树与二叉树

合集下载

第7章-树和二叉树第2讲-二叉树的概念

第7章-树和二叉树第2讲-二叉树的概念
(root),其余结点可分为m (m≥0)个互不相交的有限子集 T1、T2、…、Tm,而每个子集本身又是一棵树,称为根结点 root的子树。 树中所有结点构成一种层次关系!
第一层
树的特 点?
第二层 第三层 第四层
复习:二、树的基本术语
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个这样的二叉树。

全面007树与二叉树(续).ppt

全面007树与二叉树(续).ppt

后根遍历树的操作定义如下
(1)从左到右依次后根遍历
根的每棵子树。
(2)访问树的根结点; 例如:已知树如下:
则后根遍历序列为:
begfcda
最新.课件
a
b
c
d
e
f
g
6
五、树及森林的遍历
2.森林的遍历(两种):
先序遍历森林的操作定义如下 (1)访问森林中的第一棵树的根结点; (2)先序遍历第一棵树中根结点的子树森林; (3)先序遍历除第一棵树之后剩余的树构成的森林
e
d
二叉树的先序遍历序列g 均为:
abcefgd
则该树的后根遍历序列和其相应的
二叉树的中序遍历序列均为:
begfcda
最新.课件
f g
9
六、树、森林的遍历与其对应的二叉树的 遍历的关系
(2)森林与其对应的二叉树在遍历上的关系;
森林的先序遍历和中序遍历分别与其对应的二叉树的先序
遍历和中a序遍历相对应;f
第六章 树与二叉树(续)
最新.课件
1
二、二叉树的应用举例:算术表达式- 的波兰
表达式和逆波兰表达式的求解
(1)用二叉树表示算术表达式;+
/
操作数1 运算符 操作数2
运算符
a
×
e
f
操作数1
操作数2
b-
c
d
例如,用二叉树表示算术表达式a+b×(c-d) - e/f
用3种不同的遍历算法遍历该二叉树有:
表达式的前缀表示(波兰式) -+a×b-cd/ef
e
a f
红色线段
b
f
g
h 顺时针旋转45度
cg

树和二叉树

树和二叉树
1 树的逻辑结构
树的定义 ≥0) 结点的有限集合。 的有限集合 树:n(n≥0)个结点的有限集合。当n=0时, 称为空树;任意一棵非空树满足以下条件: 称为空树;任意一棵非空树满足以下条件:
⑴ 有且仅有一个特定的称为根的结点; 有且仅有一个特定的称为根的结点; 除根结点之外的其余结点被分成m ⑵ 当n>1时,除根结点之外的其余结点被分成m >0) 互不相交的有限集合 的有限集合T ,T (m>0)个互不相交的有限集合T1,T2,… ,Tm,其中 子树。 每个集合又是一棵树,并称为这个根结点的子树 每个集合又是一棵树,并称为这个根结点的子树。
树的定义是采用递归方法
1 树的逻辑结构
A B D E F H I
(b)一个非树结构 b)一个非树结构 (c)一个非树结构 c)一个非树结构
A C G D B F C G B D
A E F C G
(a) 一棵树结构
1 树的逻辑结构
树的基本术语 结点的度:结点所拥有的子树的个数。 结点的度:结点所拥有的子树的个数。 叶子结点:度为0的结点,也称为终端结点。 叶子结点:度为0的结点,也称为终端结点。 分支结点:度不为0的结点, 分支结点:度不为0的结点,也称为非终端结 点。 树的度:树中各结点度的最大值。 树的度:树中各结点度的最大值。
一对一
一对多
2 二叉树的概念和性质
二叉树的定义
二叉树是n n≥0)个结点的有限集合, 二叉树是n(n≥0)个结点的有限集合,该集 合或者为空集 称为空二叉树), 空集( ),或者由一 合或者为空集(称为空二叉树),或者由一 个根结点和两棵互不相交的、 个根结点和两棵互不相交的、分别称为根结 点的左子树 右子树的二叉树组成 左子树和 的二叉树组成。 点的左子树和右子树的二叉树组成。

树和二叉树专题知识课件

树和二叉树专题知识课件
这里,若T为根指针,则遍历左右子树时,是分别遍历以 T->lchild 和T->rchild 为根指针旳子树。
因为各子树旳遍历和整个二叉树旳遍历方式相同,所以, 各子树旳遍历可递归调用二叉树旳遍历算法。
先序遍历递归算法如下:
void PreOrder ( BiTree *T) { if ( T )
设B为分支总数,则n=B+1 又:分支由度为1和度为2旳结点射出, B=n1+2n2 于是,n=B+1=n1+2n2+1=n0+n1+n2 n0=n2+1
两种特殊形式旳二叉树
满二叉树 —— 一棵深度为k且有2 k-个1结点旳二叉树
特点:每一层上旳结点数都是最大结点数
完全二叉树 —— 深度为k,有n个结点旳二叉树当且仅当其每一种结点 都与深度为k旳满二叉树中编号从1至n旳结点一一相应 特点: 叶子结点只可能在层次最大旳两层上出现 对任一结点,若其右分支下子孙旳最大层次为l,则其 左分支下子孙旳最大层次必为l 或l+1
D HJ M
I
C G
A
B E K
L F C G D H
M I J
(A (B(E(K , L) , F) , C(G) , D(H(M) , I , J)))
树和二叉树
6.1 树旳定义和基本术语 ☞ 6.2 二叉树
6.3 遍历二叉树 6.4 线索二叉树 6.5 树和森林 6.6 哈夫曼树
6.2 二叉树
b cd
a f
g
eh i
j
6.3 遍历二叉树
6.3.1 遍历二叉树
☞ 6.3.2 遍历二叉树旳递归算法
6.3.3 遍历二叉树旳非递归算法 6.3.4 递归算法旳应用(3个算法)

《树和二叉树》课件

《树和二叉树》课件
《树和二叉树》PPT课件
"树和二叉树"是计算机科学中重要的数据结构。本课件将详细介绍树和二叉树 的概念、存储结构、遍历方式、二叉搜索树、平衡树等内容。让我们一起探 索这个精彩领域吧!
概念介绍
树的定义及特点
树是由节点和边组成的非线性数据结构,具有分层结构和简洁性。
二叉树的定义及特点
二叉树是一种特殊的树,每个节点最多有两个子节点。
二叉搜索树是一种有序二叉树,左子树节点 都小于根节点,右子树节点都大于根节点。
2 插入和删除节点
通过比较节点值,插入或删除符合条件的节 点,保持二叉搜索树的有序性。
3 查找节点
通过比较节点值,快速定位目标节点。
4 遍历
二叉搜索树支持前序、中序和后序遍历。
平衡树
AVL树
AVL树是一种自平衡的二叉搜索树,通过旋转操作 保持树的平衡。
二叉树的遍历方式
1 先序遍历
先访问根节点,然后按先序遍历左子树,再 按先序遍历右子树。
2 中序遍历
先按中序遍历左子树,然后访问根节点,最 后按中序遍历右子树。
3 后序遍历
先按后序遍历左子树,然后按后序遍历右子 树,最后访问根节点。
4 层序遍历
按层级顺序逐层访问二叉树节点。
二叉搜索树
1 定义及性质
二叉树的分类
根据子节点的数量和排列方式,二叉树可分为满二叉树、完全二叉树和平衡二叉树。
树和二叉树的存储结构
双亲链表存储
使用数组存储节点,并在节点 中保存父节点信息。
孩子链表存储
使用链表存储节点,并在节点 中保存子节点信息。
孩子兄弟链表存储
使用链表存储节点,并在节点 中保存第一个孩子节点和下一 个兄弟节点的信息。

树和二叉树PPT课件

树和二叉树PPT课件

有两归个纳孩基子:结点i =,1则层每时一,层只均有比一上个一根层结的点结,点个数多一
倍。
2i-1 = 20 = 1;
归纳假设:假设对所有的 j,1≤ j i,命题成立;
按照归等纳比证数明列:的二定叉义树,上每每一个项结都点可至以多看有作两是棵相子应树每,一则层第
上的结点个数,i 则层,的a结i=点ai*数qi-1=22i-1i-2 2 = 2i-1 。
Dl,Dr
(3)若Dl , Dr都不为空集,则Dl , Dr本身又是一棵符 合
本定义的二叉树,称为根root的左右子树。
基本操作P:(见教材)
17
} ADT BinaryTree
二叉树的5种基本形态
二叉树的定义
A
A
A
A
B
B
BC
(a)
(b)
(c)
(d)
(e)
空二叉树
根和空的 根和左子树 根和右子树 左右子树
线性表和广义表 栈和队列 数组和广义表

……
线性表 广义表

队列 ……
8
树的定义
树的定义
树是由n (n 0)个结点组成的有限集合。 如果n = 0,称为空树; 如果n > 0,则:
有一个特定的称之为根(root)的结点,它只有后继,但没有前
驱;
除根以外的其它结点划分为m(m>0)个互不相交的有限集合T1, T2, …, Tm。
10
树的定义
抽象数据类型树的定义
ADT Tree { 数据对象D:D是具有相同特性的数据元素的集合。 数据关系R:若D为空集,则称为空树; 否则: (1) 在D中存在唯一的称为根的数据元素root, (2) 当n>1时,其余结点可分为m (m>0)个互

树与二叉树ppt课件


}nodetype;
3.二叉树的基本操作
二叉树的基本操作有: (1)Initiate(bt):建立一棵空二叉树。 (2)Create(x,lbt,rbt):生成一棵以x为根结点的数据域信息,以
lbt和rbt为左、右子树的二叉树。 (3)InsertL(x,Parent):将数据域信息为x的结点插入到二叉树
}nodetype;
int Initiate(nodetype **bt); //1、初始化建立二叉树bt的头结点
nodetype *Create(elemtype x,nodetype *lbt,nodetype *rbt); //2、生成一棵以x为根结点的数据 域值,以lbt和rbt为左右子树的二叉树
void PreOrder(nodetype *bt); //7、前序递归遍历二叉树bt
void InOrder(nodetype *bt); //8、中序递归遍历二叉树bt
void PostOrder(nodetype *bt); //9、后前序递归遍历二叉树bt
点为第二层,其余各层依次类推。 (8)深度:树中结点的最大层次数。 (9)森林:是m(m≥0)棵互不相交的树的集合。 (10)路径:树中存在结点系列,使得Ki是Ki+1的双亲(1≤i≤n-1)。 (11)路径长度:从树根到树中每一结点的路径长度之和。
1.树和二叉树的基本概念
(12)二叉树:或是空集或是由互不相交的子集构成。二叉 树的性质如下:
7、二叉树算法的C程序实现——定义、函数声明
#define elemtype int
#define MAXNODE 100
typedef struct BTreeNode{
elemtype Data;

树与二叉树

CERNET中心
东北
哈工大
吉大
青海大学 西北
清华 北大
华北

南开
中南
西安交大
兰州大学 …
华中科大
西南

重庆大学
武汉大学 华南

电子科大

东北大学
大连理工

华东
南京大学 浙大

上海交大
深圳大学 华南理工
4.1 树的基本概念
• 家族树:
曾祖父
祖父

父亲 伯父 叔父 …
儿子 女儿 …
规律: 问题中数据元素之间有1 对多的关系
4.2 二叉树
(3) 完全二叉树的性质
0
① 有n 个结点的完log2n +1 或为 log2(n+1) 3 4
5
证明:由性质2,若完全二叉树深度为h,应有:
(深度h-1的满二叉树结点数) < n ≤(深度h的满二叉树结点数) 即: 2h-1-1 < n ≤ 2h-1 或: 2h-1≤ n < 2h
很明显:此性质也适用理想平衡二叉树
② 对完全二叉树中n个结点从上到下,每层从左到右 从0开始顺序编号,则有:
a. 若2i+1 < n,则 i的左孩子序号为 2i+1,否则 i为叶子; b. 若2i+2 <n,则 i的右孩子序号为 2i+2,否则 i无右孩子; c. 若结点编号 i >0,则其双亲序号为 (i-1)/2 。
4.2 二叉树
一、二叉树 的定义
定义: 二叉树( Binary Tree)是 n (n ≥0)个结点的有限集,
它或为空,或满足:
(1) 有一个特定的结点——根结点; (2) 其余结点分为不相交的两个子集:

数据结构树和二叉树知识点总结

数据结构树和二叉树知识点总结数据结构是计算机科学中非常重要的一门学科,它研究各种数据的组织、存储和操作方式。

而在数据结构中,树和二叉树是最常用和基础的数据结构之一。

本文将从树和二叉树的基本定义、特点和应用等方面进行总结,旨在帮助读者更好地理解和应用这两种数据结构。

一、树的基本定义和特点树是一种非线性的数据结构,它由节点和边组成。

树的基本定义是:一个节点可以有零个或多个子节点,但只能有一个父节点,且有且仅有一个节点没有父节点,这个节点称为根节点。

树的特点有以下几点:1. 每个节点都可以有零个或多个子节点,子节点之间没有任何顺序关系。

2. 根节点是树的唯一一个没有父节点的节点。

3. 每个非根节点有且只有一个父节点。

4. 树中任意两个节点之间都可以通过唯一的路径相连。

树的应用非常广泛,例如文件系统、网络结构、人类语言等都可以用树来表示和组织。

二、二叉树的基本定义和特点二叉树是树的一种特殊形式,它的每个节点最多有两个子节点,分别称为左子节点和右子节点。

二叉树的基本定义是:一个节点最多有两个子节点,且子节点之间有左右之分。

二叉树的特点有以下几点:1. 每个节点最多有两个子节点,分别称为左子节点和右子节点。

2. 左子节点和右子节点可以为空,但不能同时为空。

3. 二叉树的子树也是二叉树。

二叉树的应用非常广泛,例如在排序算法中,二叉树可以用来实现快速查找和插入等操作。

此外,二叉树还可以用来表示表达式、解析树和哈夫曼树等。

三、常见的树和二叉树算法1. 遍历算法:树和二叉树的遍历是指按照一定顺序访问树中的所有节点。

常见的遍历算法有前序遍历、中序遍历和后序遍历。

前序遍历是先访问根节点,然后再依次访问左子树和右子树;中序遍历是先访问左子树,然后再访问根节点,最后再访问右子树;后序遍历是先访问左子树,然后再访问右子树,最后再访问根节点。

2. 搜索算法:树和二叉树的搜索是指在树中查找指定节点或满足特定条件的节点。

常见的搜索算法有深度优先搜索(DFS)和广度优先搜索(BFS)。

树和二叉树这章所有知识点总结

树和二叉树这章所有知识点总结1.树的定义及基本概念树是一种非线性的数据结构,它由节点和边组成。

节点之间通过边连接,形成一种层次关系。

树的基本概念包括根节点、子节点、父节点、叶节点、深度等。

2.二叉树的定义及基本性质二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。

若左子节点和右子节点都为空,则该节点为叶节点。

基本性质包括二叉树的遍历方式、二叉树的性质和二叉树的存储方式等。

2.1二叉树的遍历二叉树的遍历方式包括前序遍历、中序遍历和后序遍历。

-前序遍历:先遍历根节点,然后递归遍历左子树,最后递归遍历右子树。

-中序遍历:先递归遍历左子树,然后遍历根节点,最后递归遍历右子树。

-后序遍历:先递归遍历左子树,然后递归遍历右子树,最后遍历根节点。

2.2二叉树的性质-满二叉树:一棵二叉树的所有非叶节点都有两个子节点,并且所有叶节点都在同一层上。

-完全二叉树:一棵二叉树的叶节点从左到右依次填入,除最后一层外,其他层的节点数达到最大。

2.3二叉树的存储方式二叉树的存储方式有两种:顺序存储和链式存储。

-顺序存储:使用数组来存储二叉树的节点数据,节点之间的关系通过数组下标来表示。

-链式存储:使用节点对象来存储二叉树的节点数据,每个节点对象包含数据以及左右子节点的引用。

3.二叉搜索树二叉搜索树(B in ary S ea rc hT re e,简称BS T)是一种特殊的二叉树,它的左子树上的所有节点值都小于根节点的值,右子树上的所有节点值都大于根节点的值。

二叉搜索树具有以下特性:-左子树上的所有节点值小于根节点的值,右子树上的所有节点值大于根节点的值。

-左右子树都是二叉搜索树。

4.平衡二叉树平衡二叉树(Ba la nc e dB in ar yT re e)是一种特殊的二叉树,它的左右子树的高度差不超过1,即任意节点的左右子树的高度差绝对值不超过1。

平衡二叉树的好处是可以保持树的平衡,提高树的操作效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

L
R
L
R
二叉树的五种不同形态
6
二叉树的性质
性质1 性质1 若二叉树的层次从 0 开始, 则在二叉 开始, 个结点。 树的第 i 层最多有 2i 个结点。( i ≥ 0) [证明用数学归纳法] 证明用数学归纳法] 注:若二叉树的层次从 1 开始, 则在二叉树 开始, 个结点。 的第 i 层最多有 2i-1 个结点。( i ≥ 1)
A B H DF A B H D F K E C G
28
A B H D F EKCG H D B
A E F KCG
EKCG
线索二叉树
具有n个结点的二叉树:共有2n个指针,其中 有n-1个有效指针,n+1个空指针。线索二叉树充 分利用2n个指针,将空指针指向按照某种遍历次 序下该结点的前驱和后继结点。这种指针称为线 索,给二叉树加上线索的过程称为二叉树的线索 化。 为区分结点的指针是指向儿子结点、还是前驱、 后继结点,需要设置线索标记。
int Count (BinTreeNode *T) { if (T == NULL) return 0; return 1+Count (T->leftChild) +Count (T->rightChild); }
25
求二叉树高度的递归算法
int Height (BinTreeNode *T) { if (T == NULL) return -1; else { int m = Height (T->leftChild); int n = Height (T->rightChild)); return (m > n) ? m+1 : n+1; }
36
Huffman编码 Huffman编码
主要用途是实现数据压缩。 主要用途是实现数据压缩。
设给出一段报文: 设给出一段报文: CAST CAST SAT AT A TASA 字符集合是 { C, A, S, T },各个字符出现的频度(次数) },各个字符出现的频度(次数) 是 W={ 2, 7, 4, 5 }。 }。 若给每个字符以等长编码 A : 00 T : 10 C : 01 S : 11 则总编码长度为 ( 2+7+4+5 ) * 2 = 36. 36.
前序遍历二叉树算法的框架是: 前序遍历二叉树算法的框架是: 若二叉树为空,结束; 若二叉树为空,结束; 否则 / + (V); 访问根结点 (V); (L); 前序遍历左子树 (L); a f * e (R)。 前序遍历右子树 (R)。 遍历结果
b
-
-+a*b-cd/ef
c
d
21
二叉树递归的前序遍历算法
D I J
1层 2层 3层
4
树的表示
双亲表示法
便于求解父结点 不利于求解兄弟结点和儿子结点 不利于求解兄弟结点和父结点
孩子表示法 便于求解儿子结点 左孩子右兄弟表示法
二叉树表示法 二叉链表表示法
5
二叉树 (Binary Tree)
二叉树的定义
一棵二叉树是结点的一个有限集合, 一棵二叉树是结点的一个有限集合, 该集合或者为空, 该集合或者为空,或者是由一个根结点加 上两棵分别称为左子树和右子树的、 上两棵分别称为左子树和右子树的、互不 相交的二叉树组成。 相交的二叉树组成。
void PostOrder (BinTreeNode *T) { if (T != NULL) { PostOrder (T->leftChild); PostOrder (T->rightChild); visit (T->data); } }
24
应用二叉树遍历的事例
计算二叉树结点个数的递归算法
9
性质4 性质4:具有 n 个结点的不同二叉树的数目
b n = ∑ b i ⋅ b n −i −1
i =0 n −1
1
bi
bn-i-1
Catalan函数 Catalan函数 1 1 (2n)! n bn = C2n = n + 1 n!⋅n! n +1
10
定义1 定义1 满二叉树 (Full Binary Tree) 定义2 定义2 完全二叉树 (Complete Binary Tree) 若设二叉树的高度为h 则共有h+1 若设二叉树的高度为h,则共有h+1层。除 层外, 第 h 层外,其它各层 (0 ∼ h-1) 的结点数都 达到最大个数, 达到最大个数,第 h 层从右向左连续缺若干 结点,这就是完全二叉树。 结点,这就是完全二叉树。
前序 中序 后序 VLR LVR LRV
18
中序遍历 (Inorder Traversal)
中序遍历二叉树算法的框架是: 中序遍历二叉树算法的框架是: 若二叉树为空,结束; 若二叉树为空,结束; 否则 / + (L); 中序遍历左子树 (L); (V); 访问根结点 (V); a * e f (R)。 中序遍历右子树 (R)。 遍历结果 a+b*c-d-e/f
4 8
5
32Hale Waihona Puke 具有不同带权路径长度的二叉树
2 2 4 5 7 4 5 7 7 5 2 4
WPL = 2*2+ 4*2+5*2+ 7*2 = 36
WPL = 2*1+ WPL = 7*1+ 4*2+5*3+ 5*2+2*3+ 7*3 = 46 4*3 = 35
带权路径长度达到最小
33
构造哈夫曼树的过程: 1) 将给定的n个权值{w1,w2,...,wn}作为n个根结点的权值,构造 森林{T1,T2,...,Tn},其中每棵二叉树只有一个根结点; 2) 在森林中选取两棵根结点权值最小的二叉树作为左右子树 构造一棵新二叉树,其根结点权值为子树树根的权值之和; 3) 删去上面选择的两棵二叉树,并将刚刚新构造的二叉树加 入到森林中; 4) 重复上面2)和 3),直到森林中只有一棵二叉树为止。这 棵二叉树就是哈夫曼树。
b c
d
19
二叉树递归的中序遍历算法
void InOrder (BinTreeNode *T) { if (T != NULL) { InOrder (T->leftChild); visit (T->data); InOrder (T->rightChild); } }
20
前序遍历 (Preorder Traversal)
29
Huffman树(§11) 树 11)
1.哈夫曼树的定义
30
• 路径 • 路径的长度 • 带权路径长度(WPL):树的各叶结点所带 树的各叶 树的各 的权值 wi 与该结点到根的路径长度 li 的乘 积的和, 积的和,即
WPL = ∑ wk lk
k =1
31
n
• 哈夫曼二叉树或最优二叉树:带权的路径长度 最小的二叉树
void PreOrder (BinTreeNode *T) { if (T != NULL) { visit (T->data); PreOrder (T->leftChild); PreOrder (T->rightChild); } }
22
后序遍历 (Postorder Traversal)
11
性质5 性质5: 如果完全二叉树各层次结点从 1 开始编号: 则有以下关系: 开始编号:1, 2, 3, …, n,则有以下关系:
若i = 1, 则 i 无双亲 的双亲为 2 若i > 1, 则 i 的双亲为i / 2 若2*i <= n, 则 i 的左儿子为 2*i, 2*i 2*i 2*i 的右儿子为2*i 若2*i+1 <= n, 则 i 的右儿子为2*i+1 若 i 为奇数, 且i != 1, 为奇数, 则其左兄弟为i 则其左兄弟为i-1, 若 i 为偶数, 且i != n, 为偶数, 则其右兄弟为i 则其右兄弟为i+1 2 4 5 6
后序遍历二叉树算法的框架是: 后序遍历二叉树算法的框架是: 若二叉树为空,结束; 若二叉树为空,结束; 否则 / + (L); 后序遍历左子树 (L); (R); 后序遍历右子树 (R); a f * e (V)。 访问根结点 (V)。 遍历结果 abcd-*+ef/-
b c
d
23
二叉树递归的后序遍历算法
2
树的特点
每棵子树的根结点有且仅有一个直接前 但可以有0个或多个直接后继。 驱,但可以有0个或多个直接后继。
A B E K L F C G H M D I J
0层 1层 2层 3层
3
结点 结点的度 分支结点 叶结点
B E K L F
子女 双亲 兄弟
A C G H M
祖先 子孙 结点层次
树的度 树深度 森林 0层
1 3 7
8 9 10
12
二叉树的顺序表示
0 1 3 7 8 4 9 5 2 6 7 3 1 4 5 0 2 6
8 9 10 11 12 13
0123456789 完全二叉树 的顺序表示
0123 5678 一般二叉树 的顺序表示
11 13
13
极端情形: 极端情形: 只有右单支的二叉树
对于完全二叉树, 对于完全二叉树, 用顺序表示较为 方便; 方便; 对于一般二叉树, 对于一般二叉树, 用链表表示较好; 用链表表示较好; 0 2 6 14 30
7
性质2 性质2 高度为 h 的二叉树最多有 2h+1-1个 结点。 结点。(h ≥ -1) [证明] 证明] h+1 20 + 21 + 22 + … + 2h = 2h+1-1 空树的高度为空树的高度为-1 只有根结点的树的高度为0 只有根结点的树的高度为0
相关文档
最新文档