一般树的存储:
1) 双亲表示法:
求父节点方便
0 |
A |
-1 |
1 |
B |
0 |
2 |
C |
0 |
3 |
D |
0 |
4 |
E |
2 |
双亲表示法:是使用数组来存储树
0-4为数组的下标
数组的类型为一个结构体
结构体中有两个数据类型:
1. 树中存储的数据(与树中的数据类型一样)
2. 存储树的节点的父节点的下标(int)
A节点没有父节点,则下标存储-1
B、C、D的父节点为A,则存储A节点的小标0
E的父节点为C,则存储C节点的下标2
2)孩子表示法:
求子节点方便
0 |
A |
|
1 |
B |
|
2 |
C |
NULL |
3 |
D |
|
4 |
E |
NULL |
5 |
F |
NULL |
6 |
G |
NULL |
孩子表示法:是使用数组和链表来实现树的存储
数组的类型为一个结构体:
结构体为一个存储树的数据类型和一个指针域(指向一个链表来存储其子节点)
节点A有三个子节点,则数组的指针域指向一个链表,链表中存储了B、C、D的指针域
同理B、D指向B、D的子节点E、F、G
C、E、F、G,,没有子节点,则指针域为NULL
2) 双亲孩子表示法
求父节点和子节点都方便
0 |
A |
-1 |
|||
1 |
B |
0 |
|||
2 |
C |
1 |
|
||
3 |
D |
2 |
NULL |
||
4 |
E |
2 |
NULL |
||
5 |
F |
2 |
NULL |
双亲孩子表示法:是使用数组和链表来实现树的存储
数组中的数据类型同理综合了双亲表示法和孩子表示法,存储父节点的小标和子节点的指针域
3) 二叉树表示法
把一个普通树转化成二叉树来存储
具体转化方法:
设法保证任意一个节点
左指针域指向它的第一个子节点
右指针域指向它的下一个兄弟节点
只要能满足此条件,就可以把一个普通树转化二叉树