题目

给定一个二叉树,判断它是否是合法的二叉查找树(BST)

一棵BST定义为:

节点的左子树中的值要严格小于该节点的值。

节点的右子树中的值要严格大于该节点的值。

左右子树也必须是二叉查找树。

一个节点的树也是二叉查找树。

解题

二叉查找树中序遍历是升序,可以中序遍历后,根据是否升序判断是否是二叉查找树,这样效率不高

在LeetCode中看到的下面的方法

根据结点满足值得范围进行查找

初始的时候只有一个根结点,范围minval,maxval都应该为null

随着迭代的运行更新minval、maxval

下面就看代码吧

/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: The root of binary tree.
* @return: True if the binary tree is BST, or false
*/
public boolean isValidBST(TreeNode root) {
return isValid(root,null,null);
}
public boolean isValid(TreeNode root,Integer minVal,Integer maxVal){
if(root == null)
return true;
if((minVal == null ||root.val> minVal) && (maxVal ==null ||root.val< maxVal)){
return isValid(root.left,minVal,root.val)
&& isValid(root.right,root.val,maxVal);
}
return false;
} }

最新文章

  1. Win10 UI入门RelativePanel
  2. 《超级IP》:伪理论,没能比现有的市场营销理论更高明,只敢勉强去解释已经发生的事情,不敢去预测未来。2星。
  3. js 获取系统当前时间
  4. android实现两个页面跳转
  5. 水灾(sliker.cpp/c/pas) 1000MS 64MB
  6. Ogre分层渲染 (转)
  7. C#--对象的相等比较
  8. SignalR1
  9. JSOI2015 一轮省选 个人题解与小结
  10. 前端dom元素的操作优化建议
  11. OpenStreetMap、googleMap等经纬度和行列号之间相互转化
  12. MySQL 多表结构的创建与分析
  13. 简单的将Excel数据同步到SqlServer数据库中
  14. jquery iCheck的全选和获取value
  15. ZJOI2008 生日聚会Party
  16. Linux上mount 挂载windows共享文件权限问题
  17. URL some
  18. HDU1853 Cyclic Tour
  19. LeetCode 题解之Remove Duplicates from Sorted List II
  20. java第八节 GUI/图形用户界面

热门文章

  1. MVC 中使用log4net 打印重复日志解决方法
  2. python中fork()函数生成子进程分析
  3. week 9 scenario testing
  4. unity 协同
  5. 阿里云服务器Node环境配置
  6. MVC缓存技术
  7. hibernate.cfg.xml 配置(摘录)
  8. OS X 使用技巧——在Finder窗口标题栏上显示路径
  9. CocoaPods最佳实践探讨
  10. 【BZOJ】【1018】【SHOI2008】堵塞的交通traffic