数据结构(十七)树的定义与存储结构

  一、树的定义

  1.树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。

  2.结点分类:树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。

  3.结点间关系:结点的子树的根称为该结点的孩子(Child),该结点称为孩子的双亲(Parent)。同一个双亲的孩子之间互称为兄弟(Sibling),结点的祖先是从根到该结点所经分支上的所有结点,反之,以某结点为根的子树中任一结点都称为该结点的子孙。

  二、树的存储结构

原文地址:https://www.cnblogs.com/BigJunOba/p/9208126.html

时间: 2024-08-07 11:42:09

数据结构(十七)树的定义与存储结构的相关文章

数据结构--树(定义与存储结构)

树基本定义 树的定义 数是具有n个节点的有限集.如图即是一个树形结构. 节点分类 节点的度:一个节点拥有的子节点即成为节点的度,比如A节点,有B和C两个子节点,那么A节点的度=2. 叶节点(终端节点):没有子节点的节点,比如G.H.I.... 如图: 节点间关系 孩子节点:某一个节点的子节点称为孩子节点.比如B.C节点是A节点的孩子节点. 双亲节点:与孩子节点相反.比如,A节点是B.C的双亲节点. 兄弟节点:同一个双亲节点的孩子节点,之间称为兄弟节点.比如,B.C为兄弟节点. 如图: 树的存储结

数据结构之树的基本运算和存储结构

树的运算: 寻找某节点 插入.删除某节点 遍历树中每个节点 先根遍历 后根遍历 层次遍历 树的存储结构: 1.双亲存储结构 typedef struct { ElemType data; int parent; }PTree[Maxsize]; 2.孩子链存储结构 typedef struct node { ElemType data; struct node *sons[MaxSons]; }TSonNode; 3.孩子兄弟链存储结构 typedef struct tnode { ElemTy

数据结构--二叉树(定义与存储结构)

什么是二叉树 是具有n个节点的有限集合,由一个根节点和两棵互不相交二叉树组成.如图 从名字简单理解,就是具有2个树叉的树形结构,当然这不是绝对的,正如上图所示,我也可以只有一个树叉. 二叉树具有五种基本形态: (1)空二叉树 (2)只有一个根结点的二叉树 (3)只有左子树 (4)只有右子树 (5)既有左子树又有右子树 完全二叉树 这种二叉树,是二叉树中常用的专业术语,不是说一个完整的二叉树就是完全二叉树,这种二叉树叫满二叉树,如图 简单理解就像图片中,完全二叉树中每个节点的编号,都能映射到满二叉

数据结构之图(术语、存储结构、遍历)

1.相关术语 顶点(Vertex).弧(Arc).弧头(初始点).弧尾(终结点).边(Edge).有向图(Directed graph).无向图(Undigraph).完全图(Completed grapg).有向完全图.稀疏图(Sparse graph).稠密图(Dense graph).权(weigh).网(network).无向网.有向网.子图(Subgraph).邻接点(Adjacent).度(Degree).入度(Indegree).出度(Outdegree).路径(path).简单路

数据结构--图的定义和存储结构

图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成.注意:在图结构中,不允许没有顶点,在定义中,如果V是顶点的集合,则强调了顶点集合V的有穷非空. 在图中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图. 图的存储结构 邻接矩阵 考虑到图是由顶点和边或者弧两部分组成的.合在一起比较困难,那就自然地考虑到分两个结构来分别存储.顶点不分大小.主次,所以用一个一位数组来存储是很不错的选择.而边或者弧是顶点与顶点之间的关系,一维搞不定,那就考虑用一个二维数组来存

图的定义和存储结构

学习目的及应用:导航 .GPS.网络规划.路径规划 交通流可以用一个图来模型化,每一条街道交叉口表示一个顶点,而每一条街道就是一条边.边的值可能是代表限制速度,或者是容量(车道的数目)等等.此时我们可能需要找出一条最短路,或用该信息找出最可能产生交通瓶颈的位置, 图的定义: 是由顶点的有穷非空集合和顶点之间边的集合组成一种数据结构 表示方法: graph = ( V,E ) V = { x | x 属于 某个数据对象} 是顶点的有穷非空集合 E = { (x, y) | (x, y) 属于 V

树的定义与存储

树的定义 树(tree):n(n>=0)个节点的有限集T. n=0 则称为空树. 当n>0时,有且仅有一个特定的节点,称为树的根(root). 当n>1时,其余节点可分为m(m>=0)个互不相交的有限集T1,T2,..Tm,其中每一个和本身又是一棵树,称为跟的子树(subtree). ① ╱ │ ╲ ② ④ ③ 树与非树识别 除了根节点外,每个节点有且仅有一个父节点. 一个N个节点的树,共有N-1条边. 树的基本术语 结点(node)--表示树中的元素,包含数据元素及若干指向其子树

数据结构--线性表的链式存储结构

一 线性表的链式存储结构 A.链式存储的定义为了表示每个数据元素与直接后继元素之间的逻辑关系:数据元素除了存储本身的信息外,还需要存储其直接后继的信息图示B链式存储逻辑结构基于链式存储结构的线性表中,每个结点都包含数据域和指针域1.数据域:存储数据元素本身2.指针域:存储相邻结点的地址图示C链表中的基本概念1.头结点--链表中的辅助结点,包含指向第一个数据元素的指针(方便插入和删除)2.数据结点--链表中代表数据元素的结点,表现形式为:(数据元素,地址)3.尾节点--链表中的最后一个数据结点,包

数据结构:队列的链式存储结构

链队列的实现方法: 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头节点,而队尾指针指向终端节点.空队列时,front和rear都指向头节点. 注意:这里的实现是有头结点的,在队列的初始化函数中要为头结点开辟空间. 链队列的实现代码: #include <iostream> #include <stdlib.h> using namespace std; /**********************