Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node’s key.
The right subtree of a node contains only nodes with keys greater than the node’s key.
Both the left and right subtrees must also be binary search trees.先试图将二叉树中序遍历,将中序遍历的各节点的值存入List中,此时中序遍历后此List中如果该二叉树是BST,那么该List中的顺序其实是递增的,所以只需查看是否有前一个值大于等于后一个值得情况,若存在,就不是BST。
public class Solution {
List<Integer> res = new ArrayList<Integer>();
public boolean isValidBST(TreeNode root) {
if (root == null) return true;
if(root.left == null&&root.right == null) return true;
inorder1(root);
for(int i= 1;i<res.size();i++){
if (res.get(i)<=res.get(i-1)) {
return false;
}
}
return true;
}
private void inorder1(TreeNode treeNode){
if (treeNode.left !=null) {
inorder1(treeNode.left);
}
res.add(treeNode.val);
if (treeNode.right != null) {
inorder1(treeNode.right);
}
}
}