递归。注意,所有左子树的节点值,都小于根节点-》意味着左子树中值最大的节点的val<root.val。最大的节点是哪一个呢?root.left的最右一个节点。右子树类似。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isValidBST(TreeNode root) {
// Start typing your Java solution below
// DO NOT write main() function
if (null == root) return true;
boolean flag = true;
if (null != root.left) {
flag &= root.left.val < root.val;
if (!flag) return false;
TreeNode rr = root.left;
while(null != rr.right) {
rr = rr.right;
}
flag &= rr.val < root.val;
if (!flag) return false;
flag &= isValidBST(root.left);
if (!flag) return false;
}
if (null != root.right) {
flag &= root.right.val > root.val;
if (!flag) return false;
TreeNode ll = root.right;
while(null != ll.left) {
ll = ll.left;
}
flag &= ll.val > root.val;
if (!flag) return false;
flag &= isValidBST(root.right);
}
return flag;
}
}
验证二叉搜索树
最新推荐文章于 2022-02-10 10:58:45 发布