1 解题思想
这题我的做法,直接就是先序遍历,遍历过程中,检查是否出错了,代码很简单。
注意用于上一个值追踪的last,一开始必须要比Int的最小值小才行,所以用了long
2 原题
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.
Example 1:
2
/ \
1 3
Binary tree [2,1,3], return true.
Example 2:
1
/ \
2 3
Binary tree [1,2,3], return false.
3 AC解
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
long last = Long.MIN_VALUE;
//采用左中右遍历后检查是否递增
public boolean isValidBST(TreeNode root) {
if (root == null) return true;
if ( !isValidBST(root.left) ) return false;
if (root.val <= last) return false;
last = root.val;
return isValidBST(root.right) ;
}
}