数据结构(C++版)第5章 树和二叉树.ppt

合集下载

数据结构第6章树和二叉树基本概念和二叉树ppt课件

数据结构第6章树和二叉树基本概念和二叉树ppt课件

§6.2 二叉树
❖二叉树的定义
或者是空树,或者是由一个根结点加上两棵 分别称为左子树和右子树的、互不相交的二叉树 组成。
二叉树的结点的子树要区分左子树和右子树, 即使在结点只有一棵子树的情况下也要明确指出 该子树是左子树还是右子树。
§6.2 二叉树
❖二叉树的定义
逻辑结构: 一对二(1:2) 基本特征: ① 每个结点最多只有两棵子树(不存在度大于2的结点) ② 左子树和右子树次序不能颠倒(有序树)。 基本形态:
§6.1 树的基本概念
❖树的基本术语
结点 ——即树的数据元素 结点的度 ——结点挂接的子树数
(有几个直接后继就是几度, 亦称“次数”) 结点的层次 ——从根到该结点的层数(根结点算第一层) 终端结点 ——即度为0的结点,即叶子 分支结点 ——即度不为0的结点(也称为内部结点) 树的度 ——所有结点度中的最大值(Max{各结点的度}) 树的深度 ——指所有结点中最大的层数(Max{各结点的层次}) (或高度)
二叉树的运算仍然是插入、删除、修改、查找、排序等,但这些操 作必须建立在对树结点能够“遍历”的基础上! (遍历——指每个结点都被访问且仅访问一次,不遗漏不重复)。
§6.2 二叉树
❖二叉树的性质
讨论1:第i层的结点数至多是多少? 2i-1个
1
2
3
(二进制性质)
4
5
6
7
8 9 10 11 12 13 14 15
特点:每层都“充满”了结点
§6.2 二叉树
❖两种特殊形式的二叉树
完全二叉树:树中所含的n个结点和满二叉树中编号 为1至n的结点一一对应
(例如删除A后的子树个数) 有序树 ——结点各子树从左至右有序,不能互换(左为第一) 无序树 ——结点各子树可互换位置。

精品课件-数据结构实用教程(C语言版)-第五章 树和二叉树

精品课件-数据结构实用教程(C语言版)-第五章 树和二叉树
先序(根)遍历二叉树、 中序(根)遍历二叉树、 后序(根)遍历二叉树。
TElemType
data;
struct TriTNode *lchild, *rchild;
// 左右孩子指针
struct TriTNode *parent; //双亲指针
} TriTNode, *TriTree;
TriTree
parent lchild data 结点结构:
A
rchild
B
D
C
G
G
A (a()aB)一一棵棵C二二叉叉∧树树 D E ∧ ∧ ∧ F(b) 改∧造后∧(的b)完改全G造二叉后树的完全二叉树
A
B
C(c) 改∧造后完全D二叉树E顺序存∧储状态∧ ∧
F
∧∧ G
A B C ∧ D E ∧∧∧ F ∧∧G
(c) 改造后完全二叉树顺序存储状态
(c) 改造后完全二叉树顺序存储状态
任何一棵非空树的逻辑结构:
是一个二元组 Tree = (root,F)
其中:root 被称为根结点, F 被称为子树森林
叶子:K,L,F,G,M,I,J
结点A的孩子:B,C,D 结点B的孩子:E,F
结点I的双亲:D 结点L的双亲:E
结点A的度:3 结点B的度:2 结点M的度:0
A
B
C
结点A的层次:1 D 结点M的层次:4
例如,B,C,D为A的子树的根,则B,C,D是A的孩子, 而A则是B,C,D的双亲。
同一个双亲的孩子之间互称兄弟。将这些关系进一步 推广,结点的祖先是从根到该结点所经分支上的所有结点 。反之,以某结点为根的子树中的任一结点都称为该结点 的子孙。如B的子孙为E、F、K和L 。

数据结构 (C语言版)课件:第6章_树和二叉树

数据结构 (C语言版)课件:第6章_树和二叉树
Data Structure


树和二叉树
树结构是一类非常重要的非线 性结构,它可以很好地反映客观世 界中广泛存在的具有分支关系或层 次特性的对象,因此在计算机领域 里有着广泛应用,比如操作系统中 的文件管理、编译程序中的语法结 构和数据库系统信息组织形式等。
2020/9/30
1
6.1 树的逻辑结构
2020/9/30
树中最基本的操作是遍历。树的遍历 是指按某种次序访问树中所有结点,使得 每个结点均被访问且仅被访问一次。
(1) 有且仅有一个特定的称为根的结点; (2) 当 n>1 时,除根结点之外的其余结点被分成 m(m>0)个互不相交 的有限集合 T1、T2、…、Tm,其中每个集合又是一棵树,并称为这个根结点 的子树。
树的定义是一个递归定义,刻画了树的固有特性:一 棵非空树是由根结点及若干棵子树构成的,而子树又可以 由其根结点和若干棵更小的子树构成。
2020/9/30
6
6.1 树的逻辑结构
6.1.1 树的定义
● 相关概念 路径、路径长度
Data Structure
● 路径:如果树的结点序列 {n1, n2, …, nk} 满足如下关系:结点 ni 是结 点 ni+1 的双亲(其中,1≤i<k),则把 n1、n2、…、nk 称为一条由 n1 至 nk 的路径 。
嵌套图
广义表
13
6.1 树的逻辑结构
6.1.1 树的定义 ● 逻辑特征
Data Structure
● 树中的任何一个结点都可以有零个或多个后继(即孩子),但至多 只能有一个前驱(即双亲)。
● 树中只有根而没有前驱的结点是开始结点;叶子没有后继,它们是终 端结点。

数据结构C语言树和二叉树PPT学习教案

数据结构C语言树和二叉树PPT学习教案
第14页/共74页
二叉树的存储结构
顺序存储结构
实现:按满二叉树的结点层次编号,依次 存放二叉树中的数据元素
特点:
结点间关系蕴含在其存储位置中
a
浪费空间,适于存满二叉树和完全二
叉树
b
c
1 2 3 4 5 6 7 8 9 10 11
abcde0000fg
d
e
f
g
第15页/共74页
链式存储结构
特点:
树中至少有一个结点——根
只有根结点的树 A
有子树的树
A

B
C
D
E
F GH I J
KL
M
子 树
第2页/共74页
基本术语
结点(node)——表示树中的元素,包括 数据项及若干指向其子树的分支
结点的度(degree)——结点拥有的子树 数
叶子(leaf)——度为0的结点 孩子(child)——结点子树的根称为该结
p=NULL
(14)
A
i 访问:C B E G D F A
B
CD
EF i
G (15)
访问:C B E G D F A
后序遍历非递归算法
第28页/共74页

遍历算法应用

按先序遍历序列建立二叉树的二叉链 表,已 知先序 序列为 :
A BC D E G F
A
B CD

统计二叉树中叶子结点个数算法
EF
第31页/共74页
typedef struct node { int data;
int ltag, rtag; struct node *lchild, *rchild; }JD;

数据结构C++版第5章 树和二叉树 ppt课件

数据结构C++版第5章 树和二叉树 ppt课件

A
B
C
D
E
A
DEF G
GBF C
16
5.1 树的逻辑结构
树结构和线性结构的比较
线性结构
树结构
第一个数据元素
根结点(只有一个)
无前驱
无双亲
最后一个数据元素 无后继
叶子结点(可以有多个) 无孩子
其它数据元素
其它结点
一个前驱,一个后继
一对一
一个双亲,多个孩子
一对多
17
5.1 树的逻辑结构
树的遍历操作
树的遍历:从根结点出发,按照某种次序访问树中所有结点 ,使得每个结点被访问一次且仅被访问一次。 Nhomakorabea……
……
6
5.1 树的逻辑结构
树的基本术语
结点的度:结点所拥有的子树的个数。 树的度:树中各结点度的最大值。
A
BC
D
E F GH I J
KL
M
7
5.1 树的逻辑结构
树的基本术语
叶子结点:度为0的结点,也称为终端结点。 分支结点:度不为0的结点,也称为非终端结点。
A
BC
D
E F GH I J
KL
M
下标 data 0A
B
C
1B 2C
3D
DEF G H
第 5 章 树和二叉树
本章的主要内容是
➢树的逻辑结构 ➢树的存储结构 ➢二叉树的逻辑结构 ➢二叉树的存储结构及实现 ➢树、森林与二叉树的转换
1
5.1 树的逻辑结构
树的定义
树:n(n≥0)个结点的有限集合。 当n=0时,称为空树; 任意一棵非空树满足以下条件: ⑴ 有且仅有一个特定的称为根的结点; ⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互 不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树, 并称为这个根结点的子树。

数据结构树和二叉树C

数据结构树和二叉树C

对任一棵二叉树,若它含有n0 个叶子结点, n2 个度为 2 的结点,则必存在关系式:
n0 = n2+1
1
证明:
设二叉树上结点总数 n = n0 + n1 + n2 又二叉树上分支总数 B = n1 + 2n2 而 B = n - 1 = n0 + n1 + n2 - 1 由此, n0 = n2 + 1
1
2
3
4
5
6
7
8 9 10 11 12
性质5:
若2i > n,则该结点无左孩子,否则,编号 为2i的结点为其左孩子结点;
若2i+1 > n,则该结点无右孩子结点,否则 ,编号为2i+1的结点为其右孩子结点。
1 2
4
5
6
8 9 10 11 12
3 7
6.2.3 二叉树的存储结构
(1)二叉树的顺序存储表示 (2)二叉树的链式存储表示
完全二叉树的特点
(1) 叶子结点只可能在层次最大的两层上出现; (2) 对任一结点,若其右分支下的子孙的最大层
次为 L,则其左分支下的子孙的最大层次必 为 L 或 L+1。
性质4:具有n个结点的完全二叉树的高度为
└ log2n ┘ + 1
证明: 设完全二叉树的高度为h,则有
(2h-1 -1 ) < n (2h -1) 或 2h-1 n < 2h
} TriTNode, *TriTree;
在不同的存储结构中,实现二叉树的操作方 法亦不同,如找结点 x 的双亲 PARENT(T,e), 在三叉链表中很容易实现,而在二叉链表中则需 从根指针出发巡查。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A
BC
D
E F GH I J
KL
M
5.1 树的逻辑结构
树的基本术语
孩子、双亲:树中某结点子树的根结点称为这个结点的孩子结 点,这个结点称为它孩子结点的双亲结点; 兄弟:具有同一个双亲的孩子结点互称为兄弟。
A
BC
D
E F GHI J
KL
M
5.1 树的逻辑结构
树的基本术语
路径:如果树的结点序列n1, n2, …, nk有如下关系:结点ni是 ni+1的双亲(1<=i<k),则把n1, n2, …, nk称为一条由n1至nk的 路径;路径上经过的边的个数称为路径长度。
data
parent
data:存储树中结点的数据信息 parent:存储该结点的双亲在数组中的下标
5.2 树的存储结构
双亲表示法中结点数据类型的定义
data parent
template <class T> struct PNode{
T data; //数据域 int parent; //指针域,双亲在数组中的下标 };
ABCDEF NhomakorabeaG前序遍历序列: ABDEHIFCG
HI
5.1 树的逻辑结构
后序遍历
树的后序遍历操作定义为: 若树为空,则空操作返回;否则 ⑴ 按照从左到右的顺序后序遍历 根结点的每一棵子树; ⑵ 访问根结点。
A
B
C
DEF G
后序遍历序列: DHIEFBGCA
HI
5.1 树的逻辑结构
层序遍历
树的层序遍历操作定义为: 从树的第一层(即根结点)开始 ,自上而下逐层遍历,在同一层 中,按从左到右的顺序对结点逐 个访问。
etc
……
Music …… Picture
……
……
5.1 树的逻辑结构
树的基本术语
结点的度:结点所拥有的子树的个数。 树的度:树中各结点度的最大值。
A
BC
D
E F GH I J
KL
M
5.1 树的逻辑结构
树的基本术语
叶子结点:度为0的结点,也称为终端结点。 分支结点:度不为0的结点,也称为非终端结点。
A
B
C
DEF G
层序遍历序列: ABCDEFGHI
HI
5.2 树的存储结构
实现树的存储结构,关键是什么? 如何表示树中结点之间的逻辑关系。
树中结点之间的逻辑关系是什么? 一对多的关系 存储结构的关键:如何表示结点的双亲和孩子
5.2 树的存储结构
双亲表示法 基本思想: 用一维数组来存储树的各个结点(一般按层序存储), 数组中的一个元素对应树中的一个结点, 每个结点记录两类信息:结点的数据信息以及该结点的双亲 在数组中的下标。
A
A
B
C
C
B
DEF G
GD E F
数据结构中讨论的一般都是有序树
5.1 树的逻辑结构
树的基本术语
森林:m (m≥0)棵互不相交的树的集合。
A
BC
D
EF
H
J
KL
5.1 树的逻辑结构
树的基本术语
同构:对两棵树,若通过对结点适当地重命名,就可以使 这两棵树完全相等(结点对应相等,结点对应关系也相等 ),则称这两棵树同构。
C
BC
D
E F GH I J
KL
M
1层
2层 高度=4
3层
4层
5.1 树的逻辑结构
树的基本术语
层序编号:将树中结点按照从上层到下层、同层从左 到右的次序依次给他们编以从1开始的连续自然数。
1A
2
B
3C
4
D
5 E F 6 7H
J8
9
K
10
L
5.1 树的逻辑结构
树的基本术语
有序树、无序树:如果一棵树中结点的各子树从左 到右是有次序的,称这棵树为有序树;反之,称为 无序树。
A
B
C
D
E
A
DEF G
GBF C
5.1 树的逻辑结构
树结构和线性结构的比较
线性结构
树结构
第一个数据元素
根结点(只有一个)
无前驱
无双亲
最后一个数据元素 无后继
叶子结点(可以有多个) 无孩子
其它数据元素
其它结点
一个前驱,一个后继
一对一
一个双亲,多个孩子
一对多
5.1 树的逻辑结构
树的遍历操作
树的遍历:从根结点出发,按照某种次序访问树中所有结点 ,使得每个结点被访问一次且仅被访问一次。
树的双亲表示法实质上是一个静态链表。
5.2 树的存储结构
双亲表示法 A
下标 data 0A
B
C
1B 2C
3D
DEF G H
4E
5F
I
6G
7H
8 如何查找双亲结点?时间性能?
I
parent -1 0 0 1 1 1 2 2 4
5.2 树的存储结构
双亲表示法
下标 data parent firstchild
A
BC
D
E F GH I J
KL
M
5.1 树的逻辑结构
树的基本术语
祖先、子孙:在树中,如果有一条路径从结点x到结 点y,那么x就称为y的祖先,而y称为x的子孙。
A
BC
D
E F GH I J
KL
M
5.1 树的逻辑结构
树的基本术语
结点所在层数:根结点的层数为1;对其余任何结点, 若某结点在第k层,则其孩子结点在第k+1层。 树的深度:树中所有结点的最大层数,也称高度。
如何理解访问?
抽象操作,可以是对结点进行的各种处理,这里简化为输出 结点的数据。
遍历的实质?
树结构(非线性结构)→线性结构。 如何理解次序?
树通常有前序(根)遍历、后序(根)遍历和层序(次) 遍历三种方式。
5.1 树的逻辑结构
前序遍历
树的前序遍历操作定义为: 若树为空,则空操作返回;否则 ⑴ 访问根结点; ⑵ 按照从左到右的顺序前序遍历 根结点的每一棵子树。
A
0A
-1
1
1B
0
3
B
C
2C
0
3D
1
6 -1
4E
1
8
DEF G H 5 F
1
-1
6G
2
-1
I
7H
2
-1
8
I
4
-1
如何查找孩子结点?时间性能?
5.2 树的存储结构
双亲表示法
下标 data parent rightsib
第 5 章 树和二叉树
本章的主要内容是
➢树的逻辑结构 ➢树的存储结构 ➢二叉树的逻辑结构 ➢二叉树的存储结构及实现 ➢树、森林与二叉树的转换 ➢哈夫曼树
5.1 树的逻辑结构
树的定义
树:n(n≥0)个结点的有限集合。 当n=0时,称为空树; 任意一棵非空树满足以下条件: ⑴ 有且仅有一个特定的称为根的结点; ⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个 互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵 树,并称为这个根结点的子树。
树的定义是采用递归方法
5.1 树的逻辑结构
树的定义
A
A
B
C
B
C
A B EC
DEF G D
F
G
D FG
HI
(a) 一棵树结构
(b)一个非树结构
(c)一个非树结构
5.1 树的逻辑结构
树的应用举例——文件结构
My Computer
C:
D:
……
WINDOWS …… Program Files
……
……
E:
相关文档
最新文档