数据结构与算法之树

:元素之间存储一对多关系的数据结构,常用于表现族谱关系、组织关系等,也可以借助特殊的树型结构实现查找、排序等算法,一般使用倒悬树的方式表示。
树的相关术语:
根结点:树的最上层元素,有且只能有一个。
子结点:该结点的对应下一层元素。
父结点:该结点的对应上一层元素。
叶子结点:没有子结点的元素,一般处于树的最底层。
兄弟结点:具有同一个父结点的元素,处在同一层。
高度:指的是树的层数。
密度:指的是树的结点数(包括根结点)。
:指的是结点的子结点数量。
普通树:
子结点的数量没有限制。
顺序存储:
1、每个结点一行
下标 数据 父结点下标
0 R -1
1 A 0
2 B 0
3 C 0
4 D 1
5 E 1
6 F 2
7 G 2
8 H 2
9 I 3
10 J 3
11 K 5
12 L 7

    2、兄弟结点连续存储
		下标 数据 父结点下标	第一个子结点下标
		0	R		-1		1
		1	A		0		4
		2	B		0		6
		3	C		0		9
		4	D		1		-1
		5	E		1		11
		6	F		2		-1
		7	G		2		12
		8	H		2		-1
		9	I		3		-1
		10	J		3		-1
		11	K		5		-1
		12	L		7		-1
		
		3、兄弟结点连续存储
		下标 数据 父结点下标	第一个子结点	最后一个子结点
		0	R		-1		1			3
		1	A		0		4			5			
		2	B		0		6			8
		3	C		0		9			10
		4	D		1		-1			-1
		5	E		1		11			11
		6	F		2		-1			-1
		7	G		2		12			12
		8	H		2		-1			-1
		9	I		3		-1			-1
		10	J		3		-1			-1
		11	K		5		-1			-1
		12	L		7		-1			-1

链式序存储:
typedef struct Node
{
TYPE data;
struct Node* brother;
struct Node* child;
}Node;

二叉树:子结点的数量多为2。
相关术语:
前序遍历:根,左,右
中序遍历:左,根,右
后序遍历:左,右,根
层序遍历:从上到下,先左后右

几种较为常见的树
普通二叉树:对二叉树的结没有位置及数量上的要求。

满二叉树:树的每一层的结点数量都 pow(2,层数-1)

完全二叉树:除了最后一层,其它每一层的结点数量都是 pow(2,层数-1),最后层的结点按照从左往的顺序存储。

有序二叉树:所有的左子结点都小于根结点,所有右子结点都大于根结点。

平衡二叉树:首先是有序的二叉树,树的左右子树的高度相差不超过1,并且子树的子树都满足这个要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值