Trees: Is This a Binary Search Tree?

  • + 1 comment

    If you want to just throw everything in the return statement, why have if statements at all? You could do this instead:

    boolean checkBST(Node root) {
            return checkBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
        }
        boolean checkBST(Node node, int min, int max) {
            return  (node == null) || 
                (min < node.data && node.data < max && 
                checkBST(node.left, min, node.data) && 
                checkBST(node.right, node.data, max));
        }
    

    I think you put the null check in an if statement in an attempt to avoid null pointer exceptions but remember that compilers "short circuit" boolean logic. If node == null, the program will not evaluate the rest of the statement because True or'd with anything is true and so NullPointerException is never thrown because no references to node beyond that ever occur.