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.
     bool varifyBST(TreeNode * root, int * out_min, int * out_max) {
if(root == NULL)
return true;
(*out_min) = root->val;
(*out_max) = root->val;
if(root->left == NULL && root->right == NULL)
return true; int vmax = root->val;
int vmin = root->val;
if(root->left != NULL){
bool ret = varifyBST(root->left, &vmin, &vmax);
if(ret == false)
return false;
if(vmax >= root->val)
return false;
(*out_min) = min(vmin, root->val);
} if(root->right != NULL){
bool ret = varifyBST(root->right, &vmin, &vmax);
if(ret == false)
return false;
if(vmin <= root->val)
return false;
(*out_max) = max(vmax, root->val);
}
return true;
} bool isValidBST(TreeNode *root) {
int vmax = ;
int vmin = ;
return varifyBST(root, &vmin, &vmax);
}

最新文章

  1. Mongodb的安装
  2. IO 相关配置参数
  3. Hadoop 调研笔记
  4. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要四
  5. EF 相见恨晚的Attach方法
  6. HTML基础(1)
  7. lucene 使用注意
  8. ECSHOP不同商品分类调用不同模板
  9. 怎么利用CSS3绘制三角形
  10. 手机端轻应用模拟原生的下拉刷新效果(JavaScript)
  11. 黄源河《左偏树的应用》——数字序列(Baltic 2004)
  12. 页面类跳转Demo
  13. FastDFS分布式存储实战
  14. RxSwift 函数响应式编程
  15. [HNOI 2001]软件开发
  16. LeetCode算法题-Minimum Distance Between BST Nodes(Java实现-四种解法)
  17. springdata 动态查询之分页
  18. swiper 父级元素display:none 之bug
  19. 剑指offer(1)
  20. height、clientHeight、offsetHeight、scrollHeight、height()、 innerHeight()、outerHeight()等的区别

热门文章

  1. Django 一对多,多对多关系解析
  2. tesseract ocr文字识别Android实例程序和训练工具全部源代码
  3. Ubuntu下编译运行C#——mono tools
  4. ASP标准控件的重要性
  5. 为什么要加 -moz- -webkit- -ms- -o- ?
  6. Mvc请求管道中的19个事件
  7. [已解决] MyBatis 中bind用法
  8. jquery中没有innerHTML
  9. 2x2矩阵相乘模版
  10. LR11启动卡修改