是否有中序创建二叉树

                                               是否有中序创建二叉树

                                                              作者:iampsl@qq.com

 

先序创建二叉树,数据结构教程中都有很详细的代码说明,但书中并没有提到是否有中序,后序创建二叉树。若有,又应该怎么创建,代码应该怎么写。

问题

一:是否有中序创建二叉树?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如上图二叉树,若有中序创建二叉树,则输入的字符串应该为:ΦBΦDΦCΦAΦEΦ

而下图的二叉树,若有中序创建二叉树,则输入的字符也为ΦBΦDΦCΦAΦEΦ

 

 

 

 

 

 

 

 

 

 

 

 

 

 


说明单单凭输入的字符ΦBΦDΦCΦAΦEΦ,则有多种二叉树与其对应,故计算机是不可能为你生成你想要的结果,因为计算机处理的代码不能有二义。

 

二,是否有后序创建二叉树?

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


还是以这个二叉树为例,假设有后序创建二叉树,则创建的字符串为:ΦΦΦDΦCBΦΦEA

由于是后序的,所以最后一个非空字符一定是这颗二叉树的根结点,当然最后一定是一个非空结点,若不是,则只能说明是一颗空树。若我们把这个后序字符串反转一下变为: AEΦΦBCΦDΦΦΦ,则得到的这个字符串我们可以把它看作是如此遍序得到的,先访问根结点,再访问右子树,最后访问左子树,我把这种访问方式叫做反先序,注意在访问每一颗子树时,都是以这种反先序进行访问的,可以很明显看出来这和先序访问在本质上是没有区别的,只是先右后左,而先序创建二叉树能行,故后序创建二叉树也一样行,那应该怎么创建呢,其实很简单,首先得到输入的创建字符串,然后再返转字符串,最后按到先创建根结点,再创建右子树,最后创建左子树进行递归调用。

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值