在这片梦想之地,不堪回首的过去像泡沫一样散去,不愿面对的明天也永远不会到来,人们为何选择沉睡?|

PassName

园龄:3年1个月粉丝:32关注:16

树与森林

树的存储结构

1.双亲表示法

双亲表示法即采用一组连续的空间表示,其中根结点的双亲用-1表示。

双亲表示法的存储结构

#define MAX_TREE_SIZE 50			//树中最多的结点数
typedef struct{
	char data;			//数据元素
	int parent;					//双亲位置
}PTNode;

typedef struct{
	PTNode nodes[MAX_TREE_SIZE];
	int n;									//结点数
}PTree;

这种存储结构能够快速找到双亲的结点,可是在求结点的孩子时,须要遍历整个树形结构。

2.孩子表示法

种存储方式找子结点比较容易,可是找父节点,则须要遍历N个结点中孩子链表指针域所指向的N个孩子链表。

3.孩子兄弟表示法

二叉链表做为树的存储结构,每一个结点包括3部份内容——结点值、指向结点第一个孩子结点的指针和指向下一个兄弟节点的指针。

最大的优点在于能够快速的完成树转化为二叉树的操做,一样,这种结构便于寻找子结点以及兄弟结点,查找双亲结点的时候比较麻烦,若每一个结点在增设一个parent域指向其父节点,则查找父结点也很方便。

4.树、森林、二叉树的转换

树转换二叉树的规则:每一个结点左指针指向它的第一个孩子结点,右指针指向它在树中相邻的兄弟结点,可表示为“左孩子,右兄弟”,因为根结点没有兄弟,因此树转换而得的二叉树没有右子树。

树->二叉树

5、树和森林的遍历

1、树的遍历:

  • 1.先根遍历:相对应为树的先序遍历

  • 2.后根遍历:相对应为树的中序遍历

2、森林的遍历

先序遍历森林

  • 1)访问森林中第一棵树的根结点

  • 2)先序遍历第一棵树中的根节点的子树森林

  • 3)先序遍历除第一课子树以后剩余的树构成森林。

中序遍历森林

  • 1)中序遍历森林中第一棵树的根结点的子树森林

  • 2)访问第一棵树的根结点

  • 3)中序遍历除去第一棵树以后剩余的树构成的森林

本文作者:PassName

本文链接:https://www.cnblogs.com/spaceswalker/p/15884857.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   PassName  阅读(52)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起