码迷,mamicode.com
首页 > 其他好文 > 详细

98. Validate Binary Search Tree

时间:2016-06-04 07:03:54      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

1. 判断是否是BST的逻辑

  1)左子树所有节点值都必须 小于 根节点的值

  2)右子树所有节点值都必须 大于 根节点的值

  3)左子树和右子树都必须也是BST

2. 所以helper函数的逻辑大概是:

  1)如果root是空,返回true

  2)如果当前节点值在允许的最小值很最大值之外,返回false

  3)返回左子树和右子树是否同时为真

3.helper函数重点:

  1)传入最小值和最大值作为参数

  2)如果某节点值是Integer.MIN_VALUE或者Integer.MAX_VALUE那么无法判断,所以要把参数都转换成Long

 

 1     public boolean isValidBST(TreeNode root) {
 2         if(root == null) {
 3             return true;
 4         }
 5         return helper(root, Long.MIN_VALUE, Long.MAX_VALUE);
 6     }
 7 
 8     private boolean helper(TreeNode root, long minValue, long maxValue) {
 9         if(root == null) {
10             return true;
11         }
12         if((long)root.val <= minValue || (long)root.val >= maxValue) {
13             return false;
14         }
15         return helper(root.left, minValue, (long)root.val) && helper(root.right, (long)root.val, maxValue);
16     }

 

98. Validate Binary Search Tree

标签:

原文地址:http://www.cnblogs.com/warmland/p/5558047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!