非独立思考

    1. public boolean isValidBST(TreeNode root) {
    2. return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
    3. }
    4. public boolean isValidBST(TreeNode cur, long min, long max) {
    5. // 相当于递归结束条件
    6. if (cur == null) {
    7. return true;
    8. }
    9. // 下面2个是递归里的判断条件
    10. if (cur.val <= min || cur.val >= max) {
    11. return false;
    12. }
    13. // 最关键的地方:定义子节点的边界值
    14. // 左子树最大不得超过当前node.val,右子树不得小于当前node.val
    15. return isValidBST(cur.left, min, cur.val) && isValidBST(cur.right, cur.val, max);
    16. }