(1.2.5.5)树 森林和二叉树的转换

一、树转换为二叉树

  树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就能将树转换成相应的二叉树:
  ①左孩子仍为左孩子;
  ②右兄弟成为右孩子

  下面(a)图所示的树可转换为(c)图所示的二叉树。
    
  注意:由于树根没有兄弟,故树转化为二叉树后,二叉树的根结点的右子树必为空。

1.先根遍历
先根遍历的定义为:
(1)访问根结点;
(2)按照从左到右的顺序先根遍历根结点的每一棵子树。
2.后根遍历
后根遍历的定义为:
(1)按照从左到右的顺序后根遍历根结点的每一棵子树。
(2)访问根结点;

二、森林转换为二叉树

  具体方法是:
  ① 将森林中的每棵树变为二叉树
  ② 因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。
  下图中,左边包含三棵树的森林可转换为右边的二叉树。 
  

1.前序遍历
前序遍历的定义为:
(1)访问森林中第一棵树的根结点;
(2)前序遍历第一棵树的根结点的子树;
(3)前序遍历去掉第一棵树后的子森林。
2.中序遍历
中序遍历的定义为:
(1)中序遍历第一棵树的根结点的子树;
(2)访问森林中第一棵树的根结点;
(3)中序遍历去掉第一棵树后的子森林。

三、树和森林的遍历

树的先根遍历=所转换二叉树的先序遍历

树的后跟遍历=所转换二叉树的中序遍历


森林的遍历=所转换二叉树的遍历



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值