lintcode:验证二叉查找树
2024-08-25 11:16:51
题目
给定一个二叉树,判断它是否是合法的二叉查找树(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;
}
}
最新文章
- Win10 UI入门RelativePanel
- 《超级IP》:伪理论,没能比现有的市场营销理论更高明,只敢勉强去解释已经发生的事情,不敢去预测未来。2星。
- js 获取系统当前时间
- android实现两个页面跳转
- 水灾(sliker.cpp/c/pas) 1000MS 64MB
- Ogre分层渲染 (转)
- C#--对象的相等比较
- SignalR1
- JSOI2015 一轮省选 个人题解与小结
- 前端dom元素的操作优化建议
- OpenStreetMap、googleMap等经纬度和行列号之间相互转化
- MySQL 多表结构的创建与分析
- 简单的将Excel数据同步到SqlServer数据库中
- jquery iCheck的全选和获取value
- ZJOI2008 生日聚会Party
- Linux上mount 挂载windows共享文件权限问题
- URL some
- HDU1853 Cyclic Tour
- LeetCode 题解之Remove Duplicates from Sorted List II
- java第八节 GUI/图形用户界面