从中序与后序遍历序列构造二叉树
// 从中序与后序遍历序列构造二叉树
package binarytree
import "slices"
// 灵茶山艾府
func buildTreeII(inorder, postorder []int) *TreeNode {
n := len(postorder)
if n == 0 { // 空节点
return nil
}
leftSize := slices.Index(inorder, postorder[n-1]) // 左子树的大小
left := buildTreeII(inorder[:leftSize], postorder[:leftSize])
right := buildTreeII(inorder[leftSize+1:], postorder[leftSize:n-1])
return &TreeNode{postorder[n-1], left, right}
}