1 双亲表示法
data | parent |
---|
存储某个结点的数据信息 | 存储该结点的双亲所在数组中的下标 |
#define MAX 50
typedef struct TreeNode{
int data;
int parent;
} TNode;
typedef struct Tree{
TNode nodes[MAX];
int n;
} T;
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e10ba2238840755da4f01d81fe8528ad.jpeg)
2 孩子表示法
2.1 孩子表示法
data | firstchild |
---|
存储某个结点的数据信息 | 存储该结点的孩子链表的头指针 |
data | next |
---|
存储某个结点在表头数组中的下标 | 存储指向某结点的下一个孩子结点的指针 |
#define MAX 50
typedef struct ChildNode{
int data;
struct ChildNode *next;
} CNode;
typedef struct TreeNode{
int data;
CNode *firstChild;
} TNode;
typedef struct Tree{
TNode nodes[MAX];
int n;
}
2.2 双亲孩子表示法
data | parent | firstchild |
---|
存储某个结点的数据信息 | 存储该结点的双亲所在数组中的下标 | 存储该结点的孩子链表的头指针 |
data | next |
---|
存储某个结点在表头数组中的下标 | 存储指向某结点的下一个孩子结点的指针 |
#define MAX 50
typedef struct ChildNode{
int data;
struct ChildNode *next;
} CNode;
typedef struct TreeNode{
int data;
int parent;
CNode *firstChild;
} TNode;
typedef struct Tree{
TNode nodes[MAX];
int n;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/821be6b4d26be6407187ce35e34dbf0b.jpeg)
3 孩子兄弟表示法
data | firstchild | rightsib |
---|
存储某个结点的数据信息 | 存储该结点的孩子链表的头指针 | 存储该结点的右兄弟结点的存储地址 |
typedef struct TreeNode{
int data;
struct TreeNode *firstChild;
struct TreeNode *rightsib;
} TNode, *Tree;