LeetCode Validate Binary Search Tree

来源:互联网 发布:淘宝延长收货 编辑:程序博客网 时间:2024/06/01 21:08

LeetCode Validate Binary Search Tree

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.

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

思路分析:本题很简单,主要是要验证给定的二叉树是否是二叉搜索树,递归的solution比较好想到,主要是定义一个函数,其参数是某个treenode以及max和min,判断当前值是否在范围内。然后递归调用,左孩子的val应该在min和root.val之间,右孩子的val应该在root.val和max之间。

AC Code

/** * 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) {        return validate(root, Integer.MAX_VALUE, Integer.MIN_VALUE);    }        public boolean validate(TreeNode root, int max, int min){        if(root == null) {            return true;        }                if(root.val >= max || root.val <= min){            return false;        }                return validate(root.left, root.val, min) && validate(root.right, max, root.val);    } }


0 0