树的存储结构以及遍历

一、树的存储结构

——————顺序存储(一维数组)——————

1.双亲表示法:

 1 #define MaxSize 100     //假设树中最多有100个节点
 2 //1.定义树节点的数据类型,假设为char型
 3 typedef char DataType;
 4 typedef struct{
 5     DataType data;      //树节点的数据信息
 6     int parent;            //该节点的双亲在数组中的下标
 7 }PNode;
 8 //2.定义双亲表示法存储结构
 9 typedef struct{
10     PNode tree[MaxSize];
11     int treeNum;        //树节点的个数
12 }PTree;

————————链式存储——————

2.孩子表示法:

 1 #define MaxSize 100;              //假设树中最多有100个节点
 2 typedef char DataType ;            //定义树节点的数据类型,假设为char型
 3 //孩子节点
 4 typedef struct ChildNode{
 5     int child;                    //该节点在表头数组中的下标
 6     struct ChildNode * Next;
 7 }ChildNode;
 8 //表头节点
 9 typedef struct{
10     DataType * data;            //树节点的数据信息
11     ChildNode * first;            //指向孩子链表的头指针
12 }TreeNode;
13 //表头数组 --定义孩子表示法的存储结构
14 typedef struct{
15     TreeNode tree [Maxsize];
16     int treeNum;                //树节点的个数
17 };

3.孩子兄弟(二叉链表)表示法

1 typedef char DataType;                        //定义树节点的数据类型,假设为char型
2 typedef struct CSNode{                         //定义节点结构
3     DataType data;
4     struct CSNode * firstchild,*rightsib;
5 }CSNode;
6 CSNode * root;                                 //定义根指针 

二、树的遍历

原文地址:https://www.cnblogs.com/wy0526/p/11804187.html

时间: 2024-08-30 01:27:24

树的存储结构以及遍历的相关文章

10.树与树的存储结构

一.树 1.树的定义:树是n(n>=0)个结点的有限集,其中n=0时称为空树.在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1.T2.....Tm,其中每一个集合本身又是一棵树,并且称为根的子树(Subtree). 注意:当m>0时,子树的个数没有限制,但它们一定是互不相交的. 2.结点的度与树的度 树的结点包含一个数据元素及若干指向其子树的分支. (1)结点的度:结点拥有的子树称为结点的度(degree)

Java数据结构-树及树的存储结构

树的定义:n(n>=0)个节点的有限集. n=0时称为空树. n!=0时为非空树,有且仅有一个特定的节点--根:n>1时,其它节点可以分为m(m>0)个互不相交的有限集T1~Tm,其中每一个集合本身又是一棵树,并且称为根的子树. 树的一些基本术语: 树的结点:由一个数据元素和若干个指向其子树的分支组成. 结点的度:结点所拥有的子树的个数(即分支数)称为该结点的度. 叶子结点:度为0的结点称为叶子结点,或者称为终端结点. 分支结点:度不为0的结点称为分支结点,或者称为非终端结点.一棵树的结

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

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

数据结构(四)树---树的存储结构

前提 树中的某个结点的孩子可以有多个,所以仅仅使用简单的顺序结构或者链式结构是不能完全表示一整棵树的. 充分利用顺序存储结构和链式存储结构的特点,完全可以实现对树的存储结构的表示 我们表示一棵树的方法有:双亲表示法,孩子表示法,孩子兄弟表示法 补充 对于双亲表示法:我们先将双亲结点存入,我们每插入一个结点都是知道双亲结点位置的,数据可以直接插入.使用顺序存储结构更加方便 而对于孩子表示法,我们每次插入一个结点,对其子树的位置存放暂不确定,所有使用链式存储结构占主要 (一)双亲表示法 以双亲作为索

树以及树的存储结构

//树的存储结构 //双亲存储结构 typedef struct { int data;//结点的值 int parent;//指向双亲位置的伪指针 } PTree[maxsize]; //孩子存储结构 typedef struct node { int data;//结点的值 struct node *sons[maxsize];//指向孩子结点 }TSonNode; //孩子兄弟链存储结构 typedef struct tnode { int data; struct tnode *hp;/

【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算

1.树与树的表示 什么是树? 客观世界中许多事物存在层次关系 人类社会家谱 社会组织结构 图书信息管理 分层次组织在管理上具有更高的效率! 数据管理的基本操作之一:查找(根据某个给定关键字K,从集合R 中找出关键字与K 相同的记录).一个自然的问题就是,如何实现有效率的查找? 静态查找:集合中记录是固定的,没有插入和删除操作,只有查找 动态查找:集合中记录是动态变化的,除查找,还可能发生插入和删除 静态查找--方法一:顺序查找(时间复杂度O(n)) int SequentialSearch(St

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

新学期开始了,开始专心于技术上了,上学期的寒假总是那么短暂,飘飘乎就这样逝去,今天补补上学期还没学完的数据结构---图,希望能和大家一起探讨,共同进步~ 定义: 图是由顶点集合及顶点间的关系集合组成的一种数据结构. 图的存储结构: 1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图.一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息. 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图. 从上面可以看出,无向图的边数组是一

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

一.图的存储结构 1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图.一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息. 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图. 从上面可以看出,无向图的边数组是一个对称矩阵.所谓对称矩阵就是n阶矩阵的元满足aij = aji.即从矩阵的左上角到右下角的主对角线为轴,右上角的元和左下角相对应的元全都是相等的. 从这个矩阵中,很容易知道图中的信息. (1)要判断任意两顶点是否有

图的存储结构及遍历

一.图的存储结构 1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图.一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息. 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图. 从上面可以看出,无向图的边数组是一个对称矩阵.所谓对称矩阵就是n阶矩阵的元满足aij = aji.即从矩阵的左上角到右下角的主对角线为轴,右上角的元和左下角相对应的元全都是相等的. 从这个矩阵中,很容易知道图中的信息. (1)要判断任意两顶点是否有