self.build(node.right,right)defbstFromPreorder(self, preorder):""":type preorder: List[int] :rtype: TreeNode"""root=TreeNode(preorder.pop(0)) self.build(root,preorder)returnroot
node->right =bstFromPreorder(right);returnnode; } }; Github 同步地址: https://github.com/grandyang/leetcode/issues/1008 类似题目: Construct Binary Tree from Preorder and Postorder Traversal Construct Binary Tree from Inorder and Postorder Traversal Construct Binary Tree from Preorder and Inorder...
fun bstFromPreorder(preorder: IntArray): TreeNode? { if (preorder == null || preorder.isEmpty()) { return null } val size = preorder.size val root = TreeNode(preorder[0]) for (i in 1 until size) { help(root, preorder[i]) } return ...
1) pre or in can be empty 2. ideas recursively DFS, 分别得到root, root.left & root.right, 返回root 3. Code classSolution:defconstructBT(self, preorder, inorder):ifnotpreorderornotinorder:return#note 别忘了not before inorderroot, index =TreeNode(preorder[0]), inorder.index(preorder[...
1 <= preorder.length <= 100 The values ofpreorderare distinct. 题解: The first element should be root. As BST, root left subtree should be smaller than root value, right subtree should be bigger than root value. Could use root value as pivot and find out array corresponding to left ...
1classSolution {2func bstFromPreorder(_ preorder: [Int]) -> TreeNode?{3returnbuildTree(0, preorder.count-1, preorder)4}56func buildTree(_ start: Int, _ end: Int, _ preorder: [Int]) -> TreeNode?{7ifstart > end {returnnil }8ifstart == end {returnTreeNode(preorder[start])...
* preorder:root->left->right,so the first element of preorder array is the root of tree **/fun bstFromPreorder(preorder: IntArray): TreeNode?{if(preorder ==null||preorder.isEmpty()) {returnnull} val size=preorder.size val root= TreeNode(preorder[0])for(i in 1until size) { ...
classSolution {int[] preorder;intidx = 0; Map<Integer, Integer> map_inorder =newHashMap<>();publicTreeNode bstFromPreorder(int[] preorder) {this.preorder =preorder;int[] inorder =Arrays.copyOf(preorder, preorder.length); Arrays.sort(inorder);intn =inorder.length;for(inti = 0; ...
TreeNode*buildTree(vector<int> &preorder, vector<int> &inorder) {if(preorder.size()==0||inorder.size()==0)returnNULL; TreeNode*root=NULL;intpreBegin=0,preEnd=preorder.size()-1;intinBegin=0,inEnd=inorder.size()-1; buildBST(root,preorder,preBegin,preEnd,inorder,inBegin,inEnd)...
m=Falseforidx, vinenumerate(preorder[1:]):ifv >preorder[0]: root.left= self.bstFromPreorder(preorder[1:idx+1]) root.right= self.bstFromPreorder(preorder[idx+1:]) m=Truebreakifm ==False: root.left= self.bstFromPreorder(preorder[1:])returnroot...