题目链接一
【Leetcode】106. 从中序与后序遍历序列构造二叉树
思路
此类题型,由先序序列跟中序序列,或者由后序序列跟中序序列,共同点都是需要中序序列,结合先序序列或者后序序列中,递归遍历二叉树的顺序性,找到每一次递归时的根节点在中序序列中的位置,结合边界,当前根节点对应的中序序列,跟后序序列,计算出当前递归时,以及左右子树的中序序列跟后续序列,不断递归构造出跟节点,以及对应的左右子树的关系
代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func buildTree(inorder []int, postorder []int) *TreeNode {
// hash表优化查询后序序列中的元素在中序序列中的位置
hash := map[int]int{
}
for idx, val := range inorder {
hash[val] = idx
}
// 序列的长度
n := len(inorder)
var fun func