4.树和森林——数据结构(严蔚敏 C语言版)

4.10树和森林

4.10.1树的存储

1.双亲表示法

节点形式:
在这里插入图片描述

  • 数据域:存放结点本身信息。
  • 双亲域:指示本结点的双亲结点在数组中的位置。

在这里插入图片描述
在这里插入图片描述

2.孩子表示法,双亲孩子表示法

在这里插入图片描述

在这里插入图片描述

3.孩子兄弟表示法

节点形式:
在这里插入图片描述
具体形式:
在这里插入图片描述

4.11树,森林,二叉树的转换

4.11.1树转二叉树

步骤:

  1. 所有的相邻兄弟结点间加一条连线;
  2. 保留每个节点与第一个孩子间的连线,删去其他线;
  3. 将所生成的二叉树顺时针旋转45°;
  4. 转换后的根节点的右孩子必为空。

在这里插入图片描述

4.11.2森林转二叉树

步骤:

  1. 把森林中的树全部转换成二叉树;
  2. 第一颗树不动,下一棵变成上一棵的右孩子;

在这里插入图片描述

4.11.3二叉树转成树和森林

1.二叉树转树:
步骤:

  1. B是A的左孩子,把B的右孩子,右孩子的右孩子与A连接;
  2. 删去所有双亲结点与右孩子间的连线。

在这里插入图片描述
2.二叉树转成森林
步骤:

  1. 将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树。
  2. 还原:将孤立的二叉树还原成树。

4.12树的遍历

树的遍历(三种方式)

  • 先根(次序)遍历:若树不空,则先访问根结点,然后依次先根遍历各棵子树。
  • 后根(次序)遍历: 若树不空,则先依次后根遍历各棵子树,然后访问根结点。
  • 按层次遍历:若树不空,则自上而下自左至右访问树中每个结点。

在这里插入图片描述

先序遍历树的结果=先序遍历二叉树的结果;
后序树=中序二叉树结果;

遍历结果:
先根遍历: ABCD E
后根遍历:BDCEA
按层次遍历: ABCE D

4.13森林的遍历

先序遍历:

  • 访问森林中第一棵树的根节点。
  • 先序遍历第一棵树中根节点的壳子数组成的森林
  • 先去便利第1棵树以外,其他树组成的森林。

先序森林等于先序二叉树。

中序遍历

  • 中序便利第1棵树根节点的各子数。
  • 访问第1棵树的根节点。
  • 中序其他的数。

中序森林等于中序二叉树。

总结技巧:可将森林先转换成二叉树,在找对应的先序和中序遍历序列。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值