代码实现:
文章尾部有图片理解,,结合图片理解效果更佳哦!
//孩子表示法
// 假设指定树的度
// 树的指针方式的孩子表示法 图6.5
#define N 3
struct TreeNode
{
int data;
struct TreeNode* subs[N]; // 指针数组
};
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// 不知道树的度
// 顺序表存孩子的指针
struct TreeNode
{
int data;
// 顺序表存孩子的指针
SeqList _sl; // SLDateType -> struct TreeNode*
// vector<struct TreeNode*> _subs; C++
};
//-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
//不知道树的度,链式实现
#define MAX 50
typedef char datatype;
typedef struct chnode{ //孩子节点
int child;
struct chnode *next;
}chnode;
typedef struct { //树中每个节点的类
datatype data;
chnode* firstchild; //孩子链表的头指针
}node;
typedef struct{
node treelist[MAX];
int n;//节点个数
int root;//根的位置;
}tree;
//双亲表示法
#define MAX 100 //树中节点个数的最大值
typedef char datatype; //节点的类型
typedef struct node{
detatype data;
int parent; //双亲节点的下标
}node;
typedef struct tree{
node treelist[MAX]; //存放节点的数组
int lenth; //树中实际节点的个数
int root //根节点的位置
}
//孩子兄弟表示法
typedef char datatype;
typedef struct node{
datatype data;
struct node* firstchild; //第一个孩子
struct node* rightsibling; //指向其下一个兄弟节点
}