题目:
分析:
对于这道题,我们有一个很巧妙的方法,就是先用中序遍历将这个二叉树的值都存入一个数组或列表中,然后比较元素的大小
以示例2为例,我们对其进行中序遍历,得到一个list:
1,5,3,4,6
如果是一个正确的二叉搜索树的话,我们得到的答案应该是:
1,3,4,5,6
所以我们可以借助中序遍历的方法来帮助我们进行判断
代码:
class Solution {
List<Integer> list=new ArrayList<>();
public boolean isValidBST(TreeNode root) {
boolean res=true;
PreOrderTraverse(root);
if(list.size()<1)return true;
for(int i=1;i<list.size();i++){
if(list.get(i)<=list.get(i-1))
res=false;
}
return res;
}
public void PreOrderTraverse(TreeNode root){
if(root==null )
return;
PreOrderTraverse(root.left);
list.add(root.val);
PreOrderTraverse(root.right);
}
}