G
N
I
D
A
O
L

【数据结构-树】树及森林的定义

1 双亲表示法

data parent
存储某个结点的数据信息 存储该结点的双亲所在数组中的下标
#define MAX 50

typedef struct TreeNode{
    int data; // 数据域
    int parent; // 双亲结点的下标
} TNode;

typedef struct Tree{
    TNode nodes[MAX]; // 结点数组
    int n; // 当前结点数
} T;

image

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; // 结点总数
}

image

3 孩子兄弟表示法

data firstchild rightsib
存储某个结点的数据信息 存储该结点的孩子链表的头指针 存储该结点的右兄弟结点的存储地址
typedef struct TreeNode{
    int data; // 数据域
    struct TreeNode *firstChild; // 孩子链表的头指针
    struct TreeNode *rightsib; // 右兄弟的地址
} TNode, *Tree;
posted @ 2022-11-10 17:47  漫舞八月(Mount256)  阅读(53)  评论(0编辑  收藏  举报