add new solutions
This commit is contained in:
parent
9c2c959a9b
commit
9a10695e8c
29 changed files with 1074 additions and 2 deletions
35
solutions/1/q105/solution.go
Normal file
35
solutions/1/q105/solution.go
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
package q105
|
||||
|
||||
type TreeNode struct {
|
||||
Val int
|
||||
Left *TreeNode
|
||||
Right *TreeNode
|
||||
}
|
||||
|
||||
func bld(preorder []int, inorder map[int]int, pL, pR, iL, iR int) *TreeNode {
|
||||
if pL == pR {
|
||||
return nil
|
||||
}
|
||||
|
||||
val := preorder[pL]
|
||||
p := inorder[val] // position of val in "inorder"
|
||||
|
||||
left := bld(preorder, inorder, pL+1, pL+1+p-iL, iL, p)
|
||||
right := bld(preorder, inorder, pL+1+p-iL, pR, p+1, iR)
|
||||
|
||||
return &TreeNode{
|
||||
Val: val,
|
||||
Left: left,
|
||||
Right: right,
|
||||
}
|
||||
}
|
||||
|
||||
func buildTree(preorder []int, inorder []int) *TreeNode {
|
||||
iIdx := make(map[int]int, len(inorder))
|
||||
for i := range inorder {
|
||||
iIdx[inorder[i]] = i
|
||||
}
|
||||
return bld(preorder, iIdx, 0, len(preorder), 0, len(preorder))
|
||||
}
|
||||
|
||||
var _ = buildTree
|
||||
Loading…
Add table
Add a link
Reference in a new issue