题目
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
思路
使用中序遍历,将每个节点的值存入list中,由于该二叉树是二叉搜索树,中序遍历的节点从小到大排列,令min=list.get(0),在循环中验证是否每一个list元素都比后一个大。
代码
class Solution {
List<Integer>list=new ArrayList<>();
public boolean isValidBST(TreeNode root) {
if(root==null){
return true;
}
transver(root);
int min=list.get(0);
for(int i=1;i<list.size();i++){
if(min<list.get(i)){
min=list.get(i);
}else{
return false;
}
}
return true;
}
public void transver(TreeNode root){
if(root==null){
return;
}
transver(root.left);
list.add(root.val);
transver(root.right);
}
}