利用二叉树中序及先序遍历确定该二叉树的后序序列

原创 2018年04月17日 16:50:35
已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历,但已知先序和后序,却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及先序遍历结果,要求输出其后序遍历结果。

输入

输入数据占2行,其中第一行表示中序遍历结果,第二行为先序遍历结果。

输出

对测试数据,输出后序遍历结果。

样例输入

BFDAEGC
ABDFCEG

样例输出

FDBGECA
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
typedef struct Node
{
	char data;
struct Node *left,*right;
}BitTree;

void Create(BitTree *&T, char *pre, char *in, int n)
{
	int k;
	char *p;
	if (n <= 0)
	{
		T = NULL;
		return;
	}
	T = new BitTree;
	T->data = *pre;
	for (p = in; p<in + n; p++)
	{
		if (*p == *pre)
		{
			break;
		}
	}
	k = p - in;
	Create(T->left, pre + 1, in, k);
	Create(T->right, pre + k + 1, p + 1, n - k - 1);
	return;
}

void Disp(BitTree *T)
{
	if (T)
	{
		Disp(T->left);
		Disp(T->right);
		cout << T->data;
	}
}

int main()
{
	BitTree *T;
	int n;
	char pre[100];
	char in[100];
	cin >> in;
	cin >> pre;
	n = strlen(in);
	Create(T, pre, in, n);
	Disp(T);
}

版权声明:本文为博主原创文章,转载注明出处 https://blog.csdn.net/qq_38271800/article/details/79977229

swustoj利用二叉树中序及后序遍历确定该二叉树的先序序列(0983)

已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历,但已知先序和后序,却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及后序遍历结果,要求输出其先序遍历结果...
  • Swust_Zeng_zhuo_K
  • Swust_Zeng_zhuo_K
  • 2017-04-17 13:37:17
  • 718

利用二叉树中序及先序遍历确定该二叉树的后序序列(0984)

已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历,但已知先序和后序,却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及先序遍历结果,要求输出其后序遍历结果...
  • Swust_Zeng_zhuo_K
  • Swust_Zeng_zhuo_K
  • 2017-04-17 13:22:40
  • 236

白话篇:利用二叉树先序/中序/后序确定二叉树求法分析

前篇: 二叉树的遍历: 二叉树的遍历是指按照一定次序访问二叉树中所有的节点,并且每个节点仅仅能够访问一次。这也是二叉树最基本的运算。 常用的3钟递归遍历方式: 1.先序遍历,过程: (1)访...
  • lishuzhai
  • lishuzhai
  • 2016-05-31 13:49:09
  • 2403

由先序遍历序列和中序遍历序列确定二叉树

  • 2008年12月13日 17:13
  • 65KB
  • 下载

根据先序和中序或后序和中序建立二叉树及树的遍历

二叉树的建立用了递归的思想,本质上是:  先建立根节点--->再建立左子树----->再建立右子树 二叉树的遍历分为先序遍历,中序遍历后序遍历,还有层序遍历    注意无论先序中序还是后序都是先遍历左...
  • u010667082
  • u010667082
  • 2015-05-30 14:49:26
  • 4956

已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列

题目描述 输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。 输入 第一行输入二叉树的先序遍历序列; 第二行输入二叉树的中序遍历序列。 输出 输出该二叉树的后序遍历序列。...
  • u013962600
  • u013962600
  • 2014-05-16 22:59:29
  • 5844

如何根据前序、中序、后序遍历还原二叉树

面试题目或多或少会出现这样的选择题或者简答题: 首先我们得知道概念: 前序遍历:先访问当前节点,再访问当前节点的左子树,最后访问当前节点的右子树。对于二叉树,深度遍历与此同。规律:根在前;子树在根...
  • yanerhao
  • yanerhao
  • 2015-04-21 20:49:38
  • 6017

根据先中序序列或后中序序列确定二叉树

根据后中序序列生成二叉树:从后序序列中找到二叉树(或者子树)的根结点,然后在中序序列找到该根结点,根结点将中序序列分成左右两部分,左边为左子树,右边为右子树。根据中序序列确定左子树的长度,确定左子树中...
  • QiaoRuoZhuo
  • QiaoRuoZhuo
  • 2014-10-03 11:36:52
  • 1911

根据二叉树前序遍历和中序遍历序列求解后序遍历的算法

问题模型:已知某二叉搜索树前序遍历序列为1,2,3,4,5,6,中序遍历为3,2,4,1,6,5,设计程序计算后序序列。 关于这个问题你可以通过前序遍历和中序遍历创建一颗树,然后通过后序遍历进行求解,...
  • Alex123980
  • Alex123980
  • 2016-06-06 20:27:59
  • 1000

pat--还原二叉树--根据后序中序输出先序

还原二叉树   (25分) 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。 输入格式: 输入首先给出正整数N(≤\le≤50),为树中结点总数。下面两行先后...
  • shengsikandan
  • shengsikandan
  • 2016-04-18 19:58:54
  • 1528
收藏助手
不良信息举报
您举报文章:利用二叉树中序及先序遍历确定该二叉树的后序序列
举报原因:
原因补充:

(最多只允许输入30个字)