http://www.geeksforgeeks.org/construct-tree-from-given-inorder-and-preorder-traversal/
1
#include <iostream>
2
#include <vector>
3
#include <algorithm>
4
#include <queue>
5
#include <stack>
6
#include <
string
>
7
#include <fstream>
8
using
namespace
std;
9
10
struct
node {
11
char
data;
12
struct
node *left, *
right;
13
node() : data(
0
), left(NULL), right(NULL) { }
14
node(
int
d) : data(d), left(NULL), right(NULL) { }
15
};
16
17
18
void
prints(node *
root) {
19
if
(!root)
return
;
20
prints(root->
left);
21
cout << root->data <<
"
"
;
22
prints(root->
right);
23
}
24
25
node *buildtree(
char
in
[],
char
pre[],
int
beg,
int
end) {
26
static
int
preindex =
0
;
27
if
(beg > end)
return
NULL;
28
node *root =
new
node(pre[preindex++
]);
29
int
index =
beg;
30
for
(
int
i = beg; i <= end; i++
) {
31
if
(
in
[i] == root->
data) {
32
index =
i;
33
break
;
34
}
35
}
36
root->left = buildtree(
in
, pre, beg, index-
1
);
37
root->right = buildtree(
in
, pre, index+
1
, end);
38
return
root;
39
}
40
41
int
main() {
42
char
in
[
6
] = {
'
D
'
,
'
B
'
,
'
E
'
,
'
A
'
,
'
F
'
,
'
C
'
};
43
char
pre[
6
] = {
'
A
'
,
'
B
'
,
'
D
'
,
'
E
'
,
'
C
'
,
'
F
'
};
44
int
len =
6
;
45
node *root = buildtree(
in
, pre,
0
, len-
1
);
46
prints(root);
47
return
0
;
48
}
Data Structure Binary Tree: Construct Tree from given Inorder and Preorder traversals

