二叉搜索树按照中序遍历是有序的,所以解法是按照中序遍历的模板,在中序遍历的过程中比较大小
解法一
- 声明一个list,按照中序遍历,在遍历的过程中使用list存储每一个遍历的值
- 判断list是否有序
解法二
- 按照中序遍历,声明一个变量记录前一个节点的值
- 判断当前节点的值是否大于前一个节点的值
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ int pre=Integer.MIN_VALUE; public boolean isValidBST (TreeNode root) { // write code here //end condition if(root == null) { return true; } //current layer if(!isValidBST(root.left)) return false; if(pre > root.val) return false; pre = root.val; //recursion formula return isValidBST(root.right); } }