27 lines
586 B
Go
27 lines
586 B
Go
// Package q106 implements a solution for https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
|
|
package q106
|
|
|
|
import "slices"
|
|
|
|
type TreeNode struct {
|
|
Val int
|
|
Left *TreeNode
|
|
Right *TreeNode
|
|
}
|
|
|
|
func buildTree(inorder []int, postorder []int) *TreeNode {
|
|
if len(inorder) == 0 {
|
|
return nil
|
|
}
|
|
|
|
val := postorder[len(postorder)-1]
|
|
pos := slices.Index(inorder, val)
|
|
|
|
return &TreeNode{
|
|
Val: val,
|
|
Left: buildTree(inorder[0:pos], postorder[:pos]),
|
|
Right: buildTree(inorder[pos+1:], postorder[pos:len(postorder)-1]),
|
|
}
|
|
}
|
|
|
|
var _ = buildTree
|