博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
98. Validate Binary Search Tree - Medium
阅读量:5775 次
发布时间:2019-06-18

本文共 1345 字,大约阅读时间需要 4 分钟。

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:

Input:    2   / \  1   3Output: true

Example 2:

5   / \  1   4     / \    3   6Output: falseExplanation: The input is: [5,1,4,null,null,3,6]. The root node's value             is 5 but its right child's value is 4.

 

recursion

给每个节点定义一个区间,如果节点的值落在区间外,返回false,否则继续递归左右节点,区间上下限相应调整

注意!!min, max如果用int会溢出,要用long

time: O(n), space: O(n)

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public boolean isValidBST(TreeNode root) {        return isValid(root, Long.MIN_VALUE, Long.MAX_VALUE);    }        public boolean isValid(TreeNode node, long min, long max) {        if(node == null) {            return true;        }                if(node.val <= min || node.val >= max) {            return false;        }        return isValid(node.left, min, node.val) && isValid(node.right, node.val, max);    }}

 

转载于:https://www.cnblogs.com/fatttcat/p/10201423.html

你可能感兴趣的文章
链表基本操作的实现(转)
查看>>
邮件发送1
查看>>
[转] libcurl异步方式使用总结(附流程图)
查看>>
编译安装LNMP
查看>>
[转]基于display:table的CSS布局
查看>>
crm 02--->讲师页面及逻辑
查看>>
AS3.0 Bitmap类实现图片3D旋转效果
查看>>
Eigen ,MKL和 matlab 矩阵乘法速度比较
查看>>
带三角的面包屑导航栏(新增递增数字)
查看>>
Web应用程序安全与风险
查看>>
codeforces 984 A. Game
查看>>
CSS居中
查看>>
One Person Game(概率+数学)
查看>>
CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs...
查看>>
MAP
查看>>
手把手教你测——上网快鸟
查看>>
用javascript获取地址栏参数
查看>>
一起谈.NET技术,你应该知道的15个Silverlight诀窍
查看>>
商教助手!解析夏普液晶高清宽屏投影机系列
查看>>
云南去年有望实现151万贫困人口净脱贫
查看>>