leetcode-98. Validate Binary Search Tree

来源:互联网 发布:大容量文件上传php 编辑:程序博客网 时间:2024/04/28 12:50

leetcode-98. 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.

这题本身思路很简单,但是有一个问题我始终解决不了就是当节点是Integer.MIN_VALUE或者Integer.MAX_VALUE的时候。当时做的时候错了很多次,后来看答案才发现原来题目用的是long- -。。确实用long就没有这种问题了。如果在int范围内还是要做很多复杂的判断的。确实是一种典型的解决Integer范围问题的方法,之前也见过很多次,以后需要注意。

/** * 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) {        return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);    }    public boolean isValidBST(TreeNode root, long minVal, long maxVal) {        if (root == null) return true;        if (root.val >= maxVal || root.val <= minVal) return false;        return isValidBST(root.left, minVal, root.val) && isValidBST(root.right, root.val, maxVal);    }}
0 0