1008. 前序遍历构造二叉搜索树
返回与给定前序遍历 preorder 相匹配的二叉搜索树(binary search tree)的根结点。
(回想一下,二叉搜索树是二叉树的一种,其每个节点都满足以下规则,对于 node.left 的任何后代,值总 < node.val,而 node.right 的任何后代,值总 > node.val。此外,前序遍历首先显示节点 node 的值,然后遍历 node.left,接着遍历 node.right。)
题目保证,对于给定的测试用例,总能找到满足要求的二叉搜索树。
链接
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
   | 
 
 
 
 
 
 
 
 
 
 
 
 
  function bstFromPreorder(preorder: number[]): TreeNode | null {   if (preorder.length === 0) return null   function traverse(preorder: number[], startIndex: number, endIndex: number) {     if (startIndex > endIndex) return null     const node = new TreeNode(preorder[startIndex])     let leftEndIndex = startIndex + 1     for(; leftEndIndex <= endIndex; leftEndIndex++) {       if (preorder[startIndex] < preorder[leftEndIndex]) break     }     node.left = traverse(preorder, startIndex + 1, leftEndIndex - 1)     node.right = traverse(preorder, leftEndIndex, endIndex)     return node   }   return traverse(preorder, 0, preorder.length - 1) };
 
  |