添加新题目
This commit is contained in:
46
二叉树/从前序与中序遍历序列构造二叉树/main.go
Normal file
46
二叉树/从前序与中序遍历序列构造二叉树/main.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package main
|
||||
|
||||
type TreeNode struct {
|
||||
Val int
|
||||
Left *TreeNode
|
||||
Right *TreeNode
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
}
|
||||
func buildTree(preorder []int, inorder []int) *TreeNode {
|
||||
|
||||
var builder func(p []int, in []int) *TreeNode
|
||||
builder = func(p []int, in []int) *TreeNode {
|
||||
if len(in) == 0 || len(p) == 0 {
|
||||
return nil
|
||||
}
|
||||
rootnum := p[0]
|
||||
value := -1
|
||||
for i := 0; i < len(in); i++ {
|
||||
if in[i] == rootnum {
|
||||
value = i
|
||||
|
||||
}
|
||||
}
|
||||
var left []int
|
||||
var right []int
|
||||
if value != -1 {
|
||||
left = in[:value]
|
||||
right = in[value+1:]
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
tmp := &TreeNode{
|
||||
Val: rootnum,
|
||||
Left: builder(p[1:1+len(left)], left),
|
||||
Right: builder(p[1+len(left):], right),
|
||||
}
|
||||
return tmp
|
||||
}
|
||||
|
||||
res := builder(preorder, inorder)
|
||||
|
||||
return res
|
||||
}
|
||||
Reference in New Issue
Block a user