给定二叉树的前序遍历结果,输出所有可能的中序遍历的结果

给定二叉树的前序遍历,如何输出所有可能的中序遍历?本文通过分析前序遍历特点,探讨解决思路。首先,根节点是前序遍历的第一个元素;接着,前序遍历剩余部分为左右子树混合,需进行拆分。以{1,2,3}为例,可得出5种情况。同时,借助另一道重建二叉树的题目,利用递归方式,根据前序和中序遍历确定根、左子树、右子树,逐步构建整棵树。" 122240899,11788192,WPF TreeView 数据绑定后的查询与定位技巧,"['wpf', 'c#']
摘要由CSDN通过智能技术生成

题目如下:给出一个二叉树的前序遍历,输出这个树所有可能的中序遍历(有时也会可能会是后序遍历)

对应于一棵二叉树的前序遍历,我们知道,前序遍历的第一个节点,一定是根节点。所以,我们可以很容易的找出根节点,剩下的部分呢,是左子树和右子树节点在一起了,本题的难点就在于,你如何去将前序遍历的结果中除去根节点部分的其余节点分为左右子树的节点。暴力一些就是慢慢拆。以前序遍历{1,2,3}为例。

因为节点较少,分析起来也很直观,所以我们可以分为以上几种情况,对于case1和case3,我们可以看出,case1中的2,3又可以存在两种不同的情况,case3中的左子树同理。可以分为以下5中情况。


这时候可以直接上代码了吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值