数据结构--树类型及树的基本概念
来源:互联网 发布:vb打印99乘法表 编辑:程序博客网 时间:2024/06/01 07:38
数据结构中的几种树
树的概念
1. 树与子树
树(Tree)是n(n>=0)个结点的有限集。在任意一棵非空树中:⑴有且仅有一个特定的称为根的结点⑵当n>1时,其余结点可分为m(m>0)个互不相交有限集T1,T2,……,Tm ,其中每一个集合本身又是一棵树,并且称为根的**子树**
2.树的基本数据操作
ADT Tree{
- 数据对象D:D是具有相同特性的数据元素的集合。
- 数据关系R:若D为空集,则称为空树;
- 若D仅含一个数据元素,则R为空集,否则R={H},H是如下二元关系:
⑴在D中存在唯一的称为根的数据元素rrot,他在关系H下无前驱
⑵若D-{root}!=空集合,则存在D-{root}的一个划分D1,D2,……,Dm(m>0),对任意 j!=k(1<=j,k<=m)有Dj∩Dk=空集,且对于任意的i(1<=i<=m)唯一存在数据元素Xi属于Di,有{root,Xi}属于H;
⑶对应于D-{root}的划分,H-{{root,xi},……,{root,xm}}有唯一的一个划分H1,H2,……,Hm(m>0),对任意j!=k(1<=j,k<=m)有Hj∩Hk=空集,且对于任意的i(1<=i<=m),Hi是Di上的二元关系,(Di,{Hi})是一棵符合本定义的树,称为根root的子树
- 若D仅含一个数据元素,则R为空集,否则R={H},H是如下二元关系:
基本操作P:
⑴ InitTree(&T); 操作结果:构造空树T。⑵ DestroyTree(&T) 初始条件:树T存在。 操作结果:销毁树T。⑶CreateTree(&T,definition): 初始条件:definition给出树T的定义 操作结果:按definition构造树T⑷ClearTree(&T) 初始条件:树T存在 操作结果:将树T清为空树⑸TreeEmpty(T) 初始条件:树T存在 操作结果:若T为空树,则返回TRUE,否则FALSE⑹Root(T) 初始条件:树T存在 操作结果:返回T的根⑺Value(T,cur_e) 初始条件:树T存在,cur_e是T中某个结点。 操作结果:返回cur_e的值⑻Assign(T,cur_e, value) 初始条件:树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有右兄弟,则返回它的右兄弟,否则函数值为“空”⑿InsertChild(&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棵子树。⒁TraverseTree(T,Visit()) 初始条件:树T存在,Visit是对结点操作的应用函数。 操作结果:按某种次序对T的每个结点调用函数Visit()一次且至多一次。一旦Visit()失败,则操作失败
3.树的基本术语
⑴ 结点的度:树中一个结点的子节点个数称为结点的度
⑵ 树的度:树中结点的最大度数称为树的度
⑶ 分支结点:度大于0的结点(又称为非终端结点)
⑷ 叶子结点:度等于0(没有子女结点)的结点称为叶子结点。
⑸结点的层次:从树根开始定义,根结点为第一层 (有的也把根结点当为第0层)
⑹结点的深度:是从根节点开始自顶向下逐层累加的
⑺ 节点的高度:从根节点开始自底向上逐层累加
⑻ 树的高度(又叫深度):是树中结点的最大层数
⑼ 路径和路径长度:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的。路径长度是路径上所经过的边的个数。
⑽有序树:如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树是有序数,否则称为无序树
⑾森林:是m(>=0)棵互不相交的树的集合。森林的概念与树的概念十分相近,因为只要把树的跟删除就成了森林。
0 0
- 数据结构--树类型及树的基本概念
- 数据结构--树的基本概念
- 数据结构与算法6: 树的基本概念及性质
- 数据结构之 树的基本概念
- 数据结构-树(Tree)的基本概念
- 数据结构:树的定义和基本概念
- 数据结构中树的一些基本概念
- 数据结构——树的基本概念
- 数据结构学习——树的基本概念
- 数据结构——树的基本概念
- 树的基本概念及性质
- java数据结构与算法之树基本概念及二叉树(BinaryTree)的设计与实现
- java数据结构与算法之树基本概念及二叉树(BinaryTree)的设计与实现
- EPOLL基本概念及数据结构
- [数据结构]数据结构的基本概念
- 【数据结构】:数据结构的基本概念
- 数据结构-树(基本概念整合)
- (一)数据结构之树基本概念
- Retrofit,Okhttp对每个Request统一动态添加header和参数
- Linux&&Centos7使用总结--ntfs移动硬盘挂载
- FFMPEG推流nginx失败,FFMPEG日志显示rtmp server requested close错误
- kylin问题记录
- 核相关跟踪
- 数据结构--树类型及树的基本概念
- tensorflow学习笔记(二十九):merge_all引发的血案
- 一个8583报文的简单例子
- sql中递归算法
- [Java并发包学习一]Executor和ExecutorService
- 各种正则表达式验证
- 乱码是怎样形成的
- Tomcat工作原理(五)-tomcat容器
- JSP的三个编译指令之include指令