是否有中序创建二叉树

来源:互联网 发布:乐乎宝山老来俏 编辑:程序博客网 时间:2024/06/05 08:08

作者:iampsl@qq.com

 

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

问题

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

 

 

 

 

 

 

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

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

 

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

 

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

 

  

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

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

 

原创粉丝点击