数据结构教案
第六章 树与二叉树
drill是什么意思
第6章 二叉树和树
6.1 树的定义和基本术语
当你离开时
1、树的递归定义
1)结点数n=0时,是空树
2)结点数n>0时
有且仅有一个根结点、m个互不相交的有限结点集——m棵子树
2、基本术语
结点: 叶子(终端结点)、根、内部结点考研政治真题答案(非终端结点、分支结点);
树的规模:结点的度、树的度、结点的层次、树的高度(深度)
结点间的关系:双亲(1)—孩子(m),祖先—子孙,兄弟,堂兄弟
兄弟间是否存在次序:无序树、有序树
去掉根结点
非空树 森林
引入一个根结点
3、树的抽象数据类型定义
树特有的操作:
查找:双亲、最左的孩子、右兄弟
结点的度不定,给出这两种操作可以查找到一个结点的全部孩子
插入、删除:孩子
遍历:存在一对多的关系,给出一种有规律的方法遍历(有且仅访问一次)树中的结点
ADT Tree{
数据对象:D={ai | ai∈ElemSet, i=1,2,synaptics…,n,take的过去式 n≥0}
数据关系:若D为空集,则称为空树;
若D仅含一个数据元素,则R为空集,否则R={H},H是如下二元关系:
(1) 在D中存在唯一的称为根的数据元素root口译,它在关系H下无前驱;
(2) 若D-{root}≠Ф,则存在D-{root}的一个划分D1, D2, clever什么意思…, Dm (m>0) (Didurex是什么 表示构成第i棵子树的结点集),对任意j≠k (1≤j, k≤m) 有Dj∩Dk=Ф,且对任意的i (1≤i≤m),唯一存在数据元素xi∈Di, 有<root, xi>∈H(H表示结点之间的父子关系);
(3) 对应于D-{root}的划分,H-{<root, x1>,…, <root, xm>}有唯一的一个划分H1, H2, …, Hm(m>0)(Hi表示第i棵子树中的父子关系),对任意j≠k(1≤j,k≤m)有Hj∩Hk=Ф,且对任意i(1≤i≤m),Hi是Di上的二元关系,(Di, {Hi杨桃的英文})是一棵符合本定义的树,称为根root的子树。
基本操作:
InitTree(&T)
操作结果:构造空树T
DestroyTree(&T)
初始条件:树T已存在
操作结果:销毁树T
ClearTree(&T)
初始条件:树T已存在
操作结果:将树T清为空树
TreeEmpty(T)
初始条件:树T已存在
操作结果:若T为空树,则返回TRUE,否则返回FALSE
TreeDepth(T)
初始条件:树T已存在
操作结果:返回树T的深度
Root(T)
初始条件:树T已存在
操作结果:返回T的根
Value(T, cur_e)
初始条件:树T已存在,cur_e是T中某个结点
操作结果:返回cur_e的值
Assign(T, &cur_e, value)
初始条件:树T已存在,cur_e是T中某个结点
操作结果:结点cur_e赋值为哒哒英语收费value
Parent(T, cur_e)
初始条件:树T已存在,cur_e是T中某个结点
操作结果:若cur_e是T的非根结点,则返回它的双亲,否则函数值为“空”
LeftChild(T, cur_e)
初始条件:树T已存在,cur_e是T中某个结点
操作结果:若cur_e是T的非叶子结点,则返回它的最左孩子,否则返回“空”
RightSibling(T, cur_e)
初始条件:树T已存在,cur_e是T中某个结点
操作结果:若cur_e有右兄弟,则返回它的右兄弟,否则返回“空”
InrtChild(&T, p, i, c)
初始条件:树T已存在,p指向T中某个结点,1≤i≤p所指结点的度+1,非空树c与T不相交
操作结果:插入c为T中p所指结点的第i棵子树。
DeleteChild(&T, p, i)
初始条件:树T已存在,p指向T中某个结点,1≤i≤p所指结点的度
操作结果:删除T中p所指结点的第i棵子树。
TraverTree(T, visit( ) )
初始条件:树T已存在,visit是对结点操作的应用函数
操作结果:按某种次序对T的每个结点调用函数visit( )一次且至多一次。一旦visit( )失败,则操作失败