算法练习四:重建二叉树

原创 2015年11月19日 19:19:39
#include<iostream>
#include"CommenDefine.h"
#include<vector>
using namespace std;
/*输入某二叉树的前序遍历和中序遍历的结果,
请重建出该二叉树。假设输入的前序遍历和中序遍历
的结果中都不含重复的数字。例如输入前序遍历序列
{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},
则重建二叉树并返回
思路:递归*/
struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in)
{
	if(0 == pre.size())
		return NULL;
	vector<int> preleft,preright;
	vector<int> inleft,inright;
	int root = pre[0];
	TreeNode *head = new TreeNode(root);
	int flag = 0;
	for(unsigned int i = 0;i < in.size();i++)
	{
		if(root == in[i])
		{
			flag = i;
			break;
		}
	}
	for(unsigned int i = 0;i < flag;i++)
	{
		inleft.push_back(in[i]);
		preleft.push_back(pre[i+1]);
	}
	for(unsigned int i = flag+1;i < in.size();i++)
	{
		inright.push_back(in[i]);
		preright.push_back(pre[i]);
	}
	head->left = reConstructBinaryTree(preleft,inleft);
	head->right = reConstructBinaryTree(preright,inright);
	return head;
}

java实现重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,...
  • Bryan__
  • Bryan__
  • 2016年09月02日 12:10
  • 1374

剑指Offer面试题6(Java版):重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重新构造出该二叉树。假设输入的前序遍历和中序遍历的结果中不包含重复的数字。例如输入的前序遍历序列为{1,2,4,7,3,5,6,8}和中序遍历为{4,7...
  • jsqfengbao
  • jsqfengbao
  • 2015年07月27日 18:36
  • 4871

数据结构:关于重建二叉树的三种思路

如果,告诉你有一棵二叉树前序遍历的结果为:ABC;中序遍历的结果为:BAC。我们可以很轻松地写出这棵二叉树就是以A为根节点、其左孩子是B、右孩子是C。那么从代码的角度,或者说是从算法的角度又要怎么来编...
  • u013761665
  • u013761665
  • 2015年11月24日 00:27
  • 4700

POJ 2255 二叉树的重建

很不错的一道题目,t
  • he012
  • he012
  • 2014年07月21日 10:48
  • 225

剑指offer--重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5...
  • kangaroo835127729
  • kangaroo835127729
  • 2015年04月10日 22:57
  • 1975

编程之美--重建二叉树

给定一个前序和中序变量的结果,写一个算法重建这棵树:如: 前序: a b d c e f 中序:  d b a e c f 前序遍历的每一个节点,都是当前子树的根节点,同时,以对应的...
  • luyafei_89430
  • luyafei_89430
  • 2013年10月23日 10:02
  • 6938

openjudge 重建二叉树3

建立二叉树3 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65535kB 描述 给出一颗二叉树每层节点的字符串表示,建立这颗二叉树,并输出中序遍历的结果。   输入 第一行输入一个...
  • kucece
  • kucece
  • 2015年06月05日 20:21
  • 411

重建二叉树 C语言实现

主要根据编程之美中利用前序与中序遍历实现二叉树的重构。其中对于前序遍历中的每一个节点都是当前子树的根节点这一理论来对中序遍历进行划分。 并且也实现了根据中序遍历与后序遍历实现二叉树的重构,其中对于后...
  • yyme411
  • yyme411
  • 2013年11月08日 20:01
  • 1108

Java笔记---剑指Offer(一:Java实现重建二叉树)

一、前言 最近正在准备找实习,因此拿起《剑指Offer》来看看,突击下自己的基础。但是《剑指Offer》上面的算法都是使用C语言,个人对C语言不熟悉,因此使用自己熟悉的Java来实现。嗯,以后要是机试...
  • GuLu_GuLu_jp
  • GuLu_GuLu_jp
  • 2016年03月09日 11:15
  • 961

二叉树(14)----由前序遍历和中序遍历重建二叉树,递归方式

1、二叉树定义 typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct ...
  • beitiandijun
  • beitiandijun
  • 2014年12月18日 00:44
  • 4592
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法练习四:重建二叉树
举报原因:
原因补充:

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