• 1008. Construct Binary Search Tree from Preorder Traversal


    Return the root node of a binary search tree that matches the given preorder traversal.

    (Recall that a binary search tree is a binary tree where for every node, any descendant of node.left has a value < node.val, and any descendant of node.right has a value > node.val.  Also recall that a preorder traversal displays the value of the node first, then traverses node.left, then traverses node.right.)

    It's guaranteed that for the given test cases there is always possible to find a binary search tree with the given requirements.

    Example 1:

    Input: [8,5,1,7,10,12]
    Output: [8,5,10,1,7,null,12]
    
    

    Constraints:

    • 1 <= preorder.length <= 100
    • 1 <= preorder[i] <= 10^8
    • The values of preorder are distinct.
    class Solution {
        public TreeNode bstFromPreorder(int[] preorder) {
            if (preorder == null || preorder.length == 0) {
                return null;
            }
            Stack<TreeNode> stack = new Stack<>();
            TreeNode root = new TreeNode(preorder[0]);
            stack.push(root);
            for (int i = 1; i < preorder.length; i++) {
                TreeNode node = new TreeNode(preorder[i]);
                if (preorder[i] < stack.peek().val) {                
                    stack.peek().left = node;                
                } else {
                    TreeNode parent = stack.peek();
                    while (!stack.isEmpty() && preorder[i] > stack.peek().val) {
                        parent = stack.pop();
                    }
                    parent.right = node;
                }
                stack.push(node);            
            }
            return root;
        }
    }
  • 相关阅读:
    第一周作业
    第八周作业
    第七周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业(markdown版本)
    第一周作业
    第六次作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12954420.html
Copyright © 2020-2023  润新知