标签:
LintCode : Validate Binary Search Tree
Description:
Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
Example:
An example:
2
/ 1 4
/ 3 5
The above binary tree is serialized as {2,1,4,#,#,3,5}
(in level order).
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: The root of binary tree. * @return: True if the binary tree is BST, or false */ public boolean isValidBST(TreeNode root) { // write your code here if (root != null) { if (root.left != null) { if (root.val <= root.left.val) { return false; } } if (root.right != null) { if (root.val >= root.right.val) { return false; } } return validBSTHelper(root.left, root.val, false) & validBSTHelper(root.right, root.val, true); } return true; } public boolean validBSTHelper(TreeNode root, int lastVal, boolean k) { if (root != null) { if (root.left != null) { if (root.val <= root.left.val || (root.left.val <= lastVal) == k) { return false; } } if (root.right != null) { if (root.val >= root.right.val || (root.right.val <= lastVal) == k) { return false; } } return validBSTHelper(root.left, root.val, false) & validBSTHelper(root.right, root.val, true); } return true; } }
The most important thing here is to remember that for one node, all the values in the left are less, all the values in the right are bigger.
LintCode : Validate Binary Search Tree
标签:
原文地址:http://www.cnblogs.com/dingjunnan/p/5399955.html