一般树的存储:
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) 二叉树表示法
把一个普通树转化成二叉树来存储
具体转化方法:
设法保证任意一个节点
左指针域指向它的第一个子节点
右指针域指向它的下一个兄弟节点
只要能满足此条件,就可以把一个普通树转化二叉树
本文介绍了四种树的存储方式:双亲表示法、孩子表示法、双亲孩子表示法和二叉树表示法。双亲表示法便于获取父节点,孩子表示法利于获取子节点,双亲孩子表示法兼顾两者,而二叉树表示法则通过转化实现存储。
1万+

被折叠的 条评论
为什么被折叠?



