孩子兄弟表示法采用链式存储结构,链表由一个数据域和两个指针域组成。其中,数据域 存放结点的数据信息,一个指针域用来指示结点的第一个孩子结点,另一个指针域用来指示结点的下一个兄弟结点。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
typedef int ElemType;
typedef struct CSNode//孩子兄弟表示法类型定义
{
ElemType data;
struct CSNode *firstchild,*nextsibling;//指向第一个孩子和下一个兄弟
}CSNode,*CSTree;
void InitCSTree(CSTree *T);//树的初始化
void DestroyCSTree(CSTree *T);//树的摧毁操作
void CreateCSTree(CSTree *T,ElemType *e,int *index);//创建树操作
int DepCSTree(CSTree T);//求树的深度
void PreTraverseCSTree(CSTree T,void(*visit)(ElemType *e));//树的先根遍历
void PostTraverseCSTree(CSTree T,void(*visit)(ElemType *e));//树的后根遍历
void DisplayCSTree(ElemType *e);//输出树的结点
#include "Tree.h"
void InitCSTree(CSTree *T)//树的初始化
{
*T = 0;
}
void DestroyCSTree(CSTree *T)//树的摧毁操作
{
CSTree p = *T;
if(p)