Friday, March 14, 2014

LeetCode: 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.

Solution:

Key points: find a way to pass the value of the grand parent. Got the idea from here.
Can also be solved by in-order traversing the BST and then check whether collected values are in the ascending order.

//in Java
public boolean isValidBST(TreeNode root) {
if(root == null) return true;
return isValidBSTRec(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
}
public boolean isValidBSTRec(TreeNode root, int min, int max){
if(root == null) return true;
if(root.val>min && root.val<max && isValidBSTRec(root.left, min, root.val)&&isValidBSTRec(root.right, root.val, max))
return true;
else
return false;
}
view raw gistfile1.java hosted with ❤ by GitHub

No comments:

Post a Comment