验证二叉搜索树

70 阅读1分钟

98.验证二叉搜索树

原题链接

代码如下

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
/*
 * 中序遍历
 * 
 * 本体采用中序遍历,即:左子树  -> 根节点  -> 右子树
 * 用变量pre记录之前遍历节点的值,并与后面节点值进行比较
 * 不符合返回false,直到遍历到最后
 */
class Solution {

	long pre = Long.MIN_VALUE;
	public boolean isValidBST(TreeNode root) {
		if(root == null) {
			return true;
		}
		if(!isValidBST(root.left)) {
			return false;			//访问左子树,如果不符合BST,返回false
		}
		if(root.val <= pre) {
			return false;			//访问当前节点,若节点小于中序遍历的前一个节点,则不满足BST,返回false
		}
		pre = root.val;
		
		return isValidBST(root.right);		//访问右子树
	}
}