树的存储结构以及遍历

一、树的存储结构

树的示例

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

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;                                 //定义根指针 

 二、树的遍历

猜你喜欢

转载自www.cnblogs.com/wy0526/p/11804187.html