Skip to content

Commit 4182fa3

Browse files
committed
solved: 106. Construct Binary Tree from Inorder and Postorder Traversal
1 parent 3d799c7 commit 4182fa3

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
// Definition for a binary tree node.
4+
type TreeNode struct {
5+
Val int
6+
Left *TreeNode
7+
Right *TreeNode
8+
}
9+
10+
func buildTree(inorder []int, postorder []int) *TreeNode {
11+
mapInOrder := make(map[int]int)
12+
13+
for i, v := range inorder {
14+
mapInOrder[v] = i
15+
}
16+
17+
var helper func(int, int) *TreeNode
18+
helper = func(left, right int) *TreeNode {
19+
if left > right {
20+
return nil
21+
}
22+
23+
pop := postorder[len(postorder)-1]
24+
postorder = postorder[:len(postorder)-1]
25+
26+
root := &TreeNode{Val: pop}
27+
mid := mapInOrder[pop]
28+
root.Right = helper(mid+1, right)
29+
root.Left = helper(left, mid-1)
30+
31+
return root
32+
}
33+
34+
return helper(0, len(inorder)-1)
35+
}

0 commit comments

Comments
 (0)