Validate Binary Search Tree

Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:

The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than the node's key. Both the left and right subtrees must also be binary search trees.

Example 1:

2

/ \ 1 3

Binary tree [2,1,3], return true.

Example 2:

1

/ \ 2 3

Binary tree [1,2,3], return false.

Solution

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
     public boolean isValidBST(TreeNode root) {
        List<Integer> result = getInOrderSequence(root);
        for(int i = 1; i < result.size(); i ++) {
            if (result.get(i-1) >= result.get(i)) {
                return false;
            }
        }

        return true;
    }

    public void inOrder(TreeNode node, List<Integer> result) {
        if (node == null) {
            return;
        }

        inOrder(node.left, result);
        result.add(node.val);
        inOrder(node.right, result);
    }

    public List<Integer> getInOrderSequence(TreeNode node) {
        List<Integer> result = new ArrayList<>();
        inOrder(node, result);
        return result;
    }
}

results matching ""

    No results matching ""