二叉树专题-验证二叉查找树
来源:互联网 发布:java按空格分割字符串 编辑:程序博客网 时间:2024/06/06 00:06
注意,题目中给的定义是严格小于,严格大于,不包含等于。
这样,每个位置的值实际上必须在一个区间内。可以用递归的先序遍历的方法,先判断根是否在对应区间内,再判断左子树与右子树。
举一个例子:
对于根节点,任意取;向左,需要严格小于1,故区间变为[负无穷,1),向右,需要大于1,故区间变为(1,正无穷];走到4时,区间为(1,3),4不在这个区间内,即不是二叉查找树
例子中的正无穷与负无穷只是用作分析,由于结构体中已定义了值为int类型,这里的负无穷与正无穷即int的最小值和最大值。
只要区间允许,是可以取到int的最大和最小的,故为了包含边界,初始是用long的最大与最小来初始。
依照先序遍历的递归写法,写出代码如下:
bool isValidBST(TreeNode *root) { // write your code here return isValidBST(root,LONG_MIN,LONG_MAX); } //用long是为了包含int的边界 bool isValidBST(TreeNode* T,long low,long high){ if(!T) return true; if(T->val>=high || T->val<=low) return false; return isValidBST(T->left,low,T->val) && isValidBST(T->right,T->val,high); }
阅读全文
1 0
- 二叉树专题-验证二叉查找树
- 验证二叉查找树
- 验证二叉查找树
- 验证二叉查找树
- 验证二叉查找树
- 验证二叉查找树
- 二叉查找树专题总结
- 二叉查找树专题总结
- LintCode:验证二叉查找树
- LintCode : 验证二叉查找树
- Lintcode 验证二叉查找树
- 验证二叉查找树-LintCode
- 验证二叉查找树-LintCode
- 数据结构专题——二叉查找树
- LintCode-二叉查找树专题总结
- lintcode-验证查找二叉树-95
- lintcode(95)验证二叉查找树
- LintCode 97 验证二叉查找树
- kangle2.0做完网站访问在线文件管理时提示没有权限
- Matlab-repmat
- FFMPEG视音频编解码零基础学习方法
- 关于static关键字的详解
- ini格式相关
- 二叉树专题-验证二叉查找树
- Python中的split()函数的用法
- 20171009-20171015C#WPF工作学习周总结
- [LeetCode]28. Implement strStr()
- 2017 新披露 :平台都用贝叶斯算法
- Android设计模式之——原型模式
- 微信小程序API之网络(二)上传数据
- rex 上传文件并远程执行
- android面试-垃圾回收算法(久邦涉及到)