一、问题描述
描述
给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。
二叉搜索树满足每个节点的左子树上的所有节点均小于当前节点且右子树上的所有节点均大于当前节点。
例:
图1
图2
数据范围:
节点数量满足 1 <= n <= 10^4,
节点上的值满足 -2^{31} <= val <= 2^{31}-1
示例1
输入:
{1,2,3}
复制返回值:
false
复制说明:
如题面图1
示例2
输入:
{2,1,3}
复制返回值:
true
复制说明:
如题面图2
二、解题思路
1.问题分析
二叉树中序遍历
2.解题代码
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return bool布尔型
*/
List< Integer> list;
Solution(){
list = new ArrayList<Integer>();
}
public void visit(TreeNode root){
if(root==null){
return;
}
visit(root.left);
list.add(root.val);
visit(root.right);
}
public boolean isValidBST (TreeNode root) {
// write code here
visit(root);
for(int i=1;i<list.size();++i){
if(list.get(i) < list.get(i-1)){
return false;
}
}
return true;
}
}