题目要求:
分析:
在第96题中,我们刚刚查过二叉搜索树的概念,由于这里要判定一棵树是不是二叉搜索树,我们就应该想到中序遍历。
因为中序遍历是左 -> 根 -> 右来遍历的,如果这棵树是BST,那么中序遍历所读出来的集合顺序应该是递增的。我们根据中序遍历读出来的结果是不是递增来判断这棵树是不是BST。
具体代码如下:
//中序遍历
class Solution {
public boolean isValidBST(TreeNode root) {
List<Integer> list = new ArrayList<>();
midTraverse(root, list);
if(list.size() == 0)
return true;
for(int i = 1; i < list.size(); i ++) {
if(list.get(i - 1) >= list.get(i)) {
return false;
}
}
return true;
}
private List<Integer> midTraverse(TreeNode root, List<Integer> list) {
if(root != null) {
midTraverse(root.left, list);
list.add(root.val);
midTraverse(root.right, list);
}
return list;
}
}