整理思路:这个是最简单的一个思路,本人能够想到的。中序遍历二叉树,得到有序数组。
import java.util.ArrayList;
import java.util.List;
public class num_19 {
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public static void main(String[] args) {
TreeNode root1 = new TreeNode(10);
TreeNode root2 = new TreeNode(5);
TreeNode root3 = new TreeNode(15);
TreeNode root4 = new TreeNode(6);
TreeNode root5 = new TreeNode(20);
root1.left = root2;
root1.right = root3;
root3.left = root4;
root3.right = root5;
System.out.println(isValidBST(root1));
}
public static boolean isValidBST(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
inorder(root, list);
for (int i = 0; i < list.size() - 1; ++i) {
if (list.get(i) >= list.get(i + 1))
return false;
}
return true;
}
public static void inorder(TreeNode node, List<Integer> list) {
if (node == null)
return;
inorder(node.left, list);
list.add(node.val);
inorder(node.right, list);
}
}