题目给你一个二叉树的根节点root判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下节点的左子树只包含严格小于当前节点的数。节点的右子树只包含严格大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1输入root [2,1,3]输出true示例 2输入root [5,1,4,null,null,3,6]输出false解释根节点的值是 5 但是右子节点的值是 4 。提示树中节点数目范围在[1, 104]内-231 Node.val 231 - 1题解/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public boolean isValidBST(TreeNode root) { DequeTreeNode stk new LinkedListTreeNode(); Long pre Long.MIN_VALUE;//记录中序遍历前一个节点的值 while(!stk.isEmpty() || root ! null){ while(root ! null){ stk.push(root); root root.left; } root stk.pop(); if(root.val pre){//和上一节点值比较 return false; } pre (long)root.val; root root.right; } return true; } }坑点Long.MIN_VALUE一个足够小的初始哨兵值避免第一个节点就是Integer.MIN_VALUE时发生误判。必须把root.val转 long 赋值给 pre否则 int 赋值给 Long 会自动装箱。