import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ public boolean isValidBST (TreeNode root) { // write code here //所有左边的节点都小于右边,所有右边的节点都大于左边 //即进行中序遍历是递增的,由于后续要得到元素比较大小所以只能使用数组 List<Integer> list = new ArrayList<>(); inorder(list,root); for(int i=1;i<list.size();i++){ if(list.get(i-1)>list.get(i)){ return false; } } return true; } //此处不能直接返回列表,不然走到某一层已经为空时, // 返回列表,那么会继续向下走就会有空指针异常 // 只能将列表一参数传递,给列表赋值。 public void inorder(List<Integer> list, TreeNode root){ //遇到空节点则返回 if(root == null) return; //先去左子树 inorder(list, root.left); //再访问根节点 list.add(root.val); //最后去右子树 inorder(list, root.right); } }