GitHub Viewer
package code;
/*
* 98. Validate Binary Search Tree
* 题意:判断是否为二叉搜索树
* 难度:Medium
* 分类:Tree, Depth-first Search
* 思路:两种方法,一种递归;另一种中序遍历的思路;
* Tips:递归时注意设置最大最小两个参数,因为节点间val限制会传递的
*/
import java.util.Stack;
public class lc98 {
public static void main(String[] args) {
TreeNode tn1 = new TreeNode(0);
tn1.left = new TreeNode(-1);
//System.out.println(isValidBST(tn1));
System.out.println(isValidBST2(tn1));
}
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public static boolean isValidBST(TreeNode root) {
if(root==null)
return true;
return dfs(root, -Double.MAX_VALUE, Double.MAX_VALUE); // 注意Double.MIN_VALUE是接近0的正数
}
public static boolean dfs(TreeNode root, double min_bound, double max_bound){ //设置两个参数,一个最大值,一个最小值
if (root == null) return true;
if (root.val >= max_bound || root.val