再回首,数据结构——树的常用术语、树和二叉树的存储结构
2015-05-28 11:22
344 查看
最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。
希望这些能提供给初学者一些参考。
//树的常用术语
/*
<span style="font-size:24px;"> 1.结点(Node)
2.度(Degree)
3.树的度
4.叶子(Leaf)
5.分支结点
6.孩子和双亲(Child & Parent)
7.兄弟(Sibling) 祖先和子孙(Ancestor & Descendant)
8.结点的层次(Level)
9.堂兄弟
10.树的深度(Depth)</span>
*/
//树的存储结构
//1.双亲(数组)表示法
#define MaxSize 50
typedef struct
{
ElementType data;
int parent;
}SeqTrNode;
typedef struct
{
SeqTrNode tree[Maxsize];
int nodenum;
}SeqTree;
SeqTree T;
//2.孩子表示法
#define MaxSize 50
typedef struct ChNode //孩子链表的结点类型
{
int child;
struct ChNode *next;
}ChildNode, *ChPoint;
typedef struct /*顺序表中每个结点的类型*/
{
ElementType data;
ChPoint FirstChild; //指向第一个孩子节点的指针
}Node;
typedef struct //树的类型
{
Node TreeList[MaxSize];
int nodenumber; //树中实际所含结点的个数
}Chlist;
//3.孩子兄弟表示法
typedef struct TrNode //树中每个结点的类型
{
ElementType data;
struct TrNode *FirstChild, *RigthSibling;
}TreeNode, *ChSiTree;
ChSiTree root; //指向树根结点的指针
//二叉树的存储结构
//1.顺序存储
#define MaxSize 30
typedef struct SeqBT
{
char btree[MaxSize];
int length; //二叉树中所含结点的实际个数
}SeqBT;
//2.链式存储
typedef struct BNode
{
ElementType data;
struct BNode *lchild;
struct BNode *rchild;
}BTNode;
typedef BTNode* BinTree;
//3.三叉链表
typedef struct BPNode
{
ElementType data;
struct BPNode *lchild;
struct BPNode *rchild;
struct BPNode *parent;
}BTPNode, *BTPTree;
希望这些能提供给初学者一些参考。
//树的常用术语
/*
<span style="font-size:24px;"> 1.结点(Node)
2.度(Degree)
3.树的度
4.叶子(Leaf)
5.分支结点
6.孩子和双亲(Child & Parent)
7.兄弟(Sibling) 祖先和子孙(Ancestor & Descendant)
8.结点的层次(Level)
9.堂兄弟
10.树的深度(Depth)</span>
*/
//树的存储结构
//1.双亲(数组)表示法
#define MaxSize 50
typedef struct
{
ElementType data;
int parent;
}SeqTrNode;
typedef struct
{
SeqTrNode tree[Maxsize];
int nodenum;
}SeqTree;
SeqTree T;
//2.孩子表示法
#define MaxSize 50
typedef struct ChNode //孩子链表的结点类型
{
int child;
struct ChNode *next;
}ChildNode, *ChPoint;
typedef struct /*顺序表中每个结点的类型*/
{
ElementType data;
ChPoint FirstChild; //指向第一个孩子节点的指针
}Node;
typedef struct //树的类型
{
Node TreeList[MaxSize];
int nodenumber; //树中实际所含结点的个数
}Chlist;
//3.孩子兄弟表示法
typedef struct TrNode //树中每个结点的类型
{
ElementType data;
struct TrNode *FirstChild, *RigthSibling;
}TreeNode, *ChSiTree;
ChSiTree root; //指向树根结点的指针
//二叉树的存储结构
//1.顺序存储
#define MaxSize 30
typedef struct SeqBT
{
char btree[MaxSize];
int length; //二叉树中所含结点的实际个数
}SeqBT;
//2.链式存储
typedef struct BNode
{
ElementType data;
struct BNode *lchild;
struct BNode *rchild;
}BTNode;
typedef BTNode* BinTree;
//3.三叉链表
typedef struct BPNode
{
ElementType data;
struct BPNode *lchild;
struct BPNode *rchild;
struct BPNode *parent;
}BTPNode, *BTPTree;
相关文章推荐
- 再回首,数据结构——图的常用术语,邻接矩阵、邻接表存储结构
- 再回首,数据结构——树和二叉树的常用算法
- 数据结构——顺序存储二叉树
- Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
- 数据结构之图(术语、存储结构、遍历)
- 【数据结构】数据结构再回首之常用排序算法
- 数据结构(六)树----树、森林与二叉树的转换及树的存储结构
- c/c++常用算法(1) -- 数据结构(线性表的顺序存储)
- 数据结构(13)二叉树的动态链表存储和遍历的实现
- 数据结构中二叉树的的存储、遍历、交换子树、统计二叉树的深度
- 若用链表存储一棵二叉树时,每个节点除数据域外,还有指向左孩子和右孩子的两个指针,在这种存储结构中,n歌节点的二叉树共有2N个指针域,其中有N-1个指针域存放了地址,有N+1个指针是空指针。
- Redis的五种存储数据结构和常用命令
- 数据结构与算法6:二叉树的存储结构与遍历
- 数据结构之图(术语、存储结构、遍历)
- 数据结构之自建算法库——二叉树的链式存储及基本运算
- 数据结构(8):二叉树的存储结构
- 数据结构之---C语言实现二叉树的三叉链表存储表示
- 数据结构(13)二叉树的动态链表存储和遍历的实现
- 二叉树的链式存储与线索二叉树-数据结构(14)
- 数据结构(12)--二叉树的静态链表存储和遍历的实现