Repository navigation
Expand file tree
/
Copy pathTreeInorderPostOrder.java
More file actions
84 lines (57 loc) · 2.11 KB
/
Copy pathTreeInorderPostOrder.java
File metadata and controls
84 lines (57 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
* Created by Samarth on 3/13/2015.
*/
package LeetCode;
import java.util.*;
import LeetCode.LevelOrderTraversal.TreeNode;
public class TreeInorderPostOrder {
public static void main(String args[]) throws Exception
{
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
root.left = node2;
root.left.left = node3;
root.left.right = node4;
root.right = node5;
root.right.left = node6;
System.out.println(lca.val);
}
public static TreeNode buildTree(int[] postorder, int[] inorder) {
return constTree(postorder.length-1, postorder, inorder, 0, inorder.length-1);
}
public static TreeNode constTree(int postOrderIndex, int[] postOrder, int[] inOrder, int inOrderStart, int inOrderEnd)
{
//System.out.println(preOrderIndex);
if (postOrderIndex > (pos)
{
return null;
}
if (inOrderStart > inOrderEnd)
{
return null;
}
TreeNode root = new TreeNode(preOrder[preOrderIndex]);
// Find position in in the inorder
int position = 0;
for (int i = inOrderStart; i <= inOrderEnd; i++) {
if (root.val == inOrder[i]) {
position = i;
break;
}
}
root.left = constTree(preOrderIndex+1, preOrder, inOrder, inOrderStart, position - 1);
root.right = constTree(preOrderIndex + position + 1 - inOrderStart, preOrder, inOrder, position + 1, inOrderEnd);
//inorderTraversal(root);
return root;
}
static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
}