Files
Hot-100-Algorithm/二叉树/从前序与中序遍历序列构造二叉树/main.go

47 lines
746 B
Go
Raw Normal View History

2025-08-26 06:18:10 +08:00
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
}