一、树的存储结构
——————顺序存储(一维数组)——————
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; //定义根指针
二、树的遍历