098 Validate Binary Search Tree 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
一个二叉搜索树有如下定义:
左子树只包含小于当前节点的数。
右子树只包含大于当前节点的数。
所有子树自身必须也是二叉搜索树。
示例 1:
2
/ \
1 3
二叉树[2,1,3], 返回 true.
示例 2:
1
/ \
2 3
二叉树 [1,2,3], 返回 false.
详见:https://leetcode.com/problems/validate-binary-search-tree/description/
Java实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public boolean isValidBST(TreeNode root) { if(root==null){ return true; } return isValidBST(root,Long.MIN_VALUE, Long.MAX_VALUE); } private boolean isValidBST(TreeNode root,long min,long max){ if(root==null){ return true; }else if(root.val<=min||root.val>=max){ return false; } return isValidBST(root.left,min,root.val)&&isValidBST(root.right,root.val,max); } }
参考:https://www.cnblogs.com/grandyang/p/4298435.html