具体算法就是用前序的第一个字母(根节点)去中序查找该字母,把中序分成前后2节,前一节是左子树,长度len_l,后一节是右子树,长度len_r。且前序字符串的长度也可以根据前序分析得到的长度len_l和len_r分成这样的2节。接着递归构建。如://前序序列 "ABDHLEKCFG"; ...
分类:
其他好文 时间:
2015-04-12 20:48:14
阅读次数:
157
题目:http://ac.jobdu.com/problem.php?pid=1385思路:前序遍历结果的第一个数字就是根节点,找到根节点在中序遍历中的位置,则该位置左边的即为左子树的中序遍历的结果。显然我们很容易就可以得到左右子树的前序和中序遍历结果,我们可以使用递归来构建。小知识:preorde...
分类:
其他好文 时间:
2015-04-08 12:25:26
阅读次数:
124
注:(1)java中树的构建(2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.SordForOffer; 2 3 import java.util.Arrays; 4 5 /*剑指o.....
分类:
编程语言 时间:
2015-04-05 21:49:10
阅读次数:
170
思路:(1)需要了解前序遍历和和中序遍历的特点,前序遍历第一个元素即为根节点,然后再在中序遍历以这个根节点为界限得到宏观上的左子串和右子串,如下图(2)又可以将截取的子串分为新的子串问题,从而可以通过迭代来解决,(3)构建左子树:主要就是指针的运用,获取前序遍历左子串的起始地址和子串长度,中序遍历左...
分类:
其他好文 时间:
2015-04-05 20:14:13
阅读次数:
141
思路:
1.将中序遍历序列和其对应的下标存储到一个map中,方便下面的查找
2.递归选取前序序列的第一个元素作为树的根节点,然后查找根节点在前序序列中位置inorderIndex,inorderIndex-startInorder可以得到左子树的长度
3.根据左子树的长度和startPreOrder可以求出前序序列中左子树的起始位置
4.从上面可以求出左右子树的前序序列和中序序列的起始位置,递归调用建树过程即可。
PS:其实,对于这道题,有更简单的方法,可根据按前序序列元素出现的顺序依次作为树的根节点进行...
分类:
其他好文 时间:
2015-04-03 15:17:20
阅读次数:
133
思路:
1.将中序遍历序列和其对应的下标存储到一个map中,方便下面的查找
2.递归选取后序序列的倒数第一个元素作为树的根节点,然后查找根节点在后序序列中位置inorderIndex,endInorder-inorderIndex可以得到右子树的长度
3.根据右子树的长度和endPreOrder可以求出后序序列中右子树的起始位置
4.从上面可以求出左右子树的后序序列和中序序列的起始位置,递归调用建树过程即可。...
分类:
其他好文 时间:
2015-04-03 15:16:31
阅读次数:
89
题目:
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
思路:根据前序和中序的特点 递归调用创建二叉树
#include
#include
u...
分类:
其他好文 时间:
2015-03-30 11:26:36
阅读次数:
122
#include
#include
using namespace std;
typedef struct tagNode{
tagNode* left;
tagNode* right;
char value;
} Node;
void rebuildtr...
分类:
其他好文 时间:
2015-03-13 23:50:09
阅读次数:
288
重建二叉树
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述题目很简单,给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)。
输入输入有多组数据(少于100组),以文件结尾结束。
每组数据仅一行,包括两个字符串,中间用空格隔开,分别表示二叉树的后序和中序序列(字符串长度小于26,输入数据保证合法)。
输出每组输出...
分类:
其他好文 时间:
2015-02-22 14:38:22
阅读次数:
131
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
这道题要求根据二叉树的前序遍历序列和中序遍历序列构建二叉树。
举个例子:
前序序列:A B D E F C...
分类:
其他好文 时间:
2015-02-14 13:48:00
阅读次数:
145