二叉搜索树按照中序遍历是有序的,所以解法是按照中序遍历的模板,在中序遍历的过程中比较大小
解法一
- 声明一个list,按照中序遍历,在遍历的过程中使用list存储每一个遍历的值
- 判断list是否有序
解法二
- 按照中序遍历,声明一个变量记录前一个节点的值
- 判断当前节点的值是否大于前一个节点的值
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布尔型
*/
int pre=Integer.MIN_VALUE;
public boolean isValidBST (TreeNode root) {
// write code here
//end condition
if(root == null)
{
return true;
}
//current layer
if(!isValidBST(root.left))
return false;
if(pre > root.val) return false;
pre = root.val;
//recursion formula
return isValidBST(root.right);
}
}

京公网安备 11010502036488号