5.4.1树的存储结构 5.4.2树和森林的遍历

文章详细介绍了树的逻辑结构,包括双亲表示法和孩子兄弟表示法,以及树和二叉树在顺序存储和链式存储下的特点。同时,阐述了树和森林的遍历方式,如先根遍历、后根遍历和层次遍历,并讨论了森林与二叉树之间的转换及其遍历策略。
摘要由CSDN通过智能技术生成

 回忆一下树的逻辑结构:

 双亲表示法(顺序存储)

 

 

 

 如果增加一个结点M,L。毋须按照逻辑上的次序存储。

如果是删除元素:

方案一:比如说删除元素为G,设置其双亲结点为-1。

 方案二:

把尾部的结点提上来。

 

还需要改变数值让结点数减1。

还要删除以他为根节点的子孙节点。

 

 

 来回顾一下二叉树的顺序存储:

 可以根据结点编号不仅反映了存储位置,也隐含了结点之间的逻辑关系。

下面来讲解树的孩子表示法

 

下面就是孩子兄弟表示法(链式存储)

 

 一个数据域,两个指针

其实是跟二叉树的链式存储时一样的

 只是名称有所不同

 就得到了孩子兄弟法得到了树

 是不是二叉树和树就可以相互转化了。

接下来看森林和二叉树的相互转换:

 

再把二叉树转换为森林:

 

 

5.4.2树和森林的遍历

 树的遍历

1)树的先根遍历

 那么对这颗树进行先根遍历的话那么顺序是这样的:

先是ABCD

然后A(BEF)(CG)(DHIJ)

最后A(B(EK)F)(CG)(DHIJ)

伪代码实现:

 树和二叉树的转换

 二叉树的先序遍历序列和树的先根遍历序列相同

2)树的后根遍历

 

 先依次对每棵子树进行后根遍历,最后在访问根节点。

遍历序列如下:

 

 先往下往左走

 对二叉树的中序遍历序列是相同的。

3)树的层次遍历

 最后在队列中的元素依次出队。

先根遍历和后根遍历需要往深处走,所以我们称之为深度优先遍历。

层序遍历我们称之为广度优先遍历。

下面我们再来看对森林的遍历

1)先序遍历

森林是m(m>=0)棵互不相交的树的集合。每棵树去掉根节点之后,其各个子树又组成森林。

 也可以先把森林转换成与之对应的二叉树:

 效果等同于依次对二叉树的先序遍历

2)中序遍历

 

 

用孩子兄弟表示法,森林可以转换成对应的二叉树,这样就可以实现先序和中序遍历森林。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值