没有合适的资源?快使用搜索试试~ 我知道了~
DSAinC++9-树与二叉树1
需积分: 0 0 下载量 26 浏览量
2022-08-04
14:06:48
上传
评论
收藏 787KB PDF 举报
温馨提示
试读
12页
9.0简介9.1 树的定义与基本术语9.2 二叉树的定义与实现9.3 二叉树的遍历9.4 构建二叉树9.5 用二叉树表示树与森林第9章 树与二叉树树结构是一种数
资源详情
资源评论
资源推荐
2022/4/6
1
第9章 树与二叉树
王文伟 WangWenwei,Dr.‐Ing.
Tel:189‐71562600
Email:[email protected]
课程QQ群:珞珈EIS数据结构与算法
,
668792335
电子信息学院
第9章 树与二叉树
2
TableofContents
电子信息学院
本章介绍具有层次
关系的非线性数据
结构—树和二叉树
的概念和定义,重
点讨论二叉树的性
质、存储结构和遍
历算法,并介绍线
索二叉树的定义、
存储结构和遍历算
法。
本
章
位
置
第1章绪论
第2章 C++编程基础
第3章 遍历、迭代与递归
第4章 字符串
第5章 排序算法
第6章 线性表
第7章 栈与队列
第8章 数组和广义表
第9章 树和二叉树
第10章图
第11章 查找算法
第9章 树与二叉树
3
TableofContents
电子信息学院
9.0简介
9.1树的定义与基本术语
9.2二叉树的定义与实现
9.3二叉树的遍历
9.4构建二叉树
9.5用二叉树表示树与森林
第9章 树与二叉树
4
9.0Introduction
树结构是一种数据元素之间具有层次关系的非
线性结构。树结构从自然树抽象而来,树的根、
枝杈和叶子分别对应于层次结构的起源、分支
和终点。
树结构有树和二叉树两种。二叉树是最多只有
两个子树且两个子树有左右之分的有序树。
本章介绍具有层次关系的树结构,重点讨论二
叉树的定义、性质、存储结构和遍历算法,并
讨论线索二叉树的定义、存储结构和遍历算法。
第9章 树与二叉树
5
9.1树的定义与基本术语
9.1.1 树的定义和表示
9.1.2 树的基本术语
9.1.3 树的基本操作
现实世界很多对象之间具有层次关系,如家族成员、
机构部门、计算机文件系统等,类似于自然界中的树。
文件系统具有树型结构,根目录是树的根节点,子目
录是树中的分支节点,文件是树的叶子结点。
除根结点外,每个元素只有一个前驱元素,但可以有
零个或若干个后继元素。
祖父
伯父 叔父父亲
我
儿子儿子
堂兄
堂弟
孙子 孙子
弟兄
(a) 家谱树 (b) 文件系统
文件系统
C:\
Program Files
Windows
D:\
csharp
data
第9章 树与二叉树
6
例:以树结构描述测试假币的称重策略
2022/4/6
2
9.1.1树的定义和表示
树(tree)是由n个结点组成的有限集合,包含一个根
结点和零或若干棵互不相交的子树。
n=0的树称为空树;对n>0的树T有以下特点:
树T有一个称为根结点的特殊结点(root)。
当n>1时,根结点之外的其他结点分为m个互不相交的集合
T
1
, T
2
, …, T
m
,每个T
i
本身就是一棵树,称作子树(subtree)。
第9章 树与二叉树
8
树可以分为无序树与有序树
在无序树(unorderd tree)中,结点的子
树T
1
,T
2
,…之间没有次序。通常所说的
树指的是无序树。
如果树中结点的子树T
1
,T
2
,…从左至右
是有次序的,则称该树为有序树(orderd
tree)。
第9章 树与二叉树
9
树与森林
若干棵互不相交的树的集合称为森林
(forest)。
将树的根结点删除就变成由子树组成的森林。
给森林加上一个根结点就变成一棵树。
第9章 树与二叉树
10
树的广义表形式表示
可以用广义表的形式表示树结构。例,如图
所示树的广义表表示形式为:
A(B(C,D),E(F,G,H),I(J))
树中的叶结点对应
广义表中的原子,
非叶结点对应子表。
树结构的广义表是
一种纯表,其中没
有共享和递归成分。
第9章 树与二叉树
11
9.1.2树的基本术语
node:结点表示树集合中的一个数据元素,它一
般由元素的数据和指向其子结点的指针构成。
child node与parent node:若结点N有子树,则子
树的根结点称为结点N的子结点。结点N称为其
孩子的父结点。父子结点相连接。
sibling node:同一双亲的子结点之间互称兄弟结
点。
ancestor node与descendant node:后代是指结点的
所有子结点,以及各子结点的子结点。而从根
到结点N所经过的所有结点,称为其祖先结点。
与树有关的术语常用家族成
员之间的关系来定义与说明
第9章 树与二叉树
12
树的基本术语(II)
degree of node&tree : 结点的度定义为其
所拥有子树的棵数。树的度是指树中各结点
度的最大值。
leaf node与branch node: 叶子结点是指度
为0的结点,又称为终端结点。除叶子结点以
外的其他结点,称为分支结点或非叶子结点,
又称为非终端结点。
edge: 设树中
M
结点是
N
结点的父结点,有
序对<
M
,
N
>称为连接这两个结点的边,构成
树的一条分支。
2022/4/6
3
第9章 树与二叉树
13
树的基本术语(II)
path与path length: 如果(N
1
,N
2
,…,N
k
)
是由树中结点组成的一个序列,且<N
i
,N
i+1
>
都是树的边,则该序列称为从N
1
到N
k
的一条路
径。路径上边的数目称为该路径长度。
level of node: 令根结点的层次为0,其余结
点的层次等于它双亲结点的层次加1。显然,
兄弟结点的层次相同。结点N的层次与从根到
该结点的路径长度有关。
depth of tree: 树中结点的最大层次数称为
树的深度或高度。
第9章 树与二叉树
14
9.1.3树的基本操作
Initialize:初始化。建立一个树实例并初始化它的
结点集合和边的集合。
AddNode /AddNodes:在树中设置、添加一个或若
干个结点。
Get/Set:访问。获取或设置树中的指定结点。
Count:求树的结点个数。
AddEdge:在树中设置、添加边,即结点之间的关
联。
Remove:删除。从树中删除一个数据结点及相关
联的边。
Contains/IndexOf:查找。在树中查找满足某种条
件的结点(数据元素)。
第9章 树与二叉树
15
9.2二叉树的定义与实现
9.2.1二叉树的定义
9.2.2二叉树的性质
9.2.3二叉树的存储结构
9.2.4二叉树类的定义
树结构包括无序树和有序树两种类型
有序树中最常用的是二叉树(binarytree),二叉
树易于在计算机中表示和实现。
第9章 树与二叉树
16
9.2.1二叉树的定义
二叉树(binary tree)的递归定义:二叉树是n个结点
组成的有限集合。n=0时称为空二叉树;n>0时,
二叉树由一个根结点和两棵互不相交的、分别称为
左子树和右子树的子二叉树构成。
二叉树是一种有序树,每个结点的两棵子树有左、
右之分,即使只有一个子树,也要区分是左子树还
是右子树。
二叉树的结点最多只有两棵子树,所以二叉树的度
最多为2。
1
2 3
(a) 树1
1
3 2
(b) 树2
树: 两者相同
二叉树:两者不同
第9章 树与二叉树
17
二叉树的五种基本形态
(a)为空的二叉树。
(b)为只有一个结点(根结点)的二叉树。
(c)为由根结点,非空的左子树和空的右子树组成的二叉树。
(d)为由根结点,空的左子树和非空的右子树组成的二叉树。
(e)为由根结点,非空的左子树和非空的右子树组成的二叉树。
第9章 树与二叉树
18
【例9.1】画出3个结点的树与二叉树的基本形态
(a)3个结点的树:
2种基本形态
(b)3个结点的二叉树:
5种基本形态
剩余11页未读,继续阅读
易烫YCC
- 粉丝: 23
- 资源: 315
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0