1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
   | function buildTree(inorder: number[], postorder: number[]): TreeNode | null {   return build(     inorder, 0, inorder.length - 1,     postorder, 0, postorder.length - 1   ) }
  function build(   inorder: number[], inStart: number, inEnd: number,   postorder: number[], postStart: number, postEnd: number ): TreeNode | null {   if (inStart > inEnd) return null   const rootVal = postorder[postEnd]   let index = 0   for(let i = inStart;i <= inEnd;i++) {     if (inorder[i] === rootVal) {       index = i       break     }   }   const leftSize = index - inStart   const root = new TreeNode(rootVal)   root.left = build(     inorder, inStart, index - 1,     postorder, postStart, postStart + leftSize - 1   )   root.right = build(     inorder, index + 1, inEnd,     postorder, postStart + leftSize, postEnd - 1   )   return root }
  |