题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914175003709.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2ODI4Mzk1,size_16,color_FFFFFF,t_70)
大致思路
- 直接利用中序遍历的代码进行修改,将中序遍历按顺序存放入数组,按照中序的特点和二叉搜索树的特点,得到的数组应该是有序的,并且是升序的。最后进行判断即可。
代码实现
package com.immunize.leetcode.isValidBST;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public boolean isValidBST(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
if (root == null)
return true;
orderBST(root, list);
for (int i = 0; i < list.size() - 1; i++) {
if (list.get(i) >= list.get(i + 1))
return false;
}
return true;
}
private void orderBST(TreeNode root, List<Integer> list) {
if (root == null)
return;
orderBST(root.left, list);
list.add(root.val);
orderBST(root.right, list);
}
}