lintcode:Validate Binary Search Tree
2016-03-20 20:34
411 查看
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.
A single node tree is a BST
http://www.lintcode.com/en/problem/validate-binary-search-tree/#
1.需要两个值maxValue, minValue 来记录当前节点应该的取值范围。
2.判断中序遍历是否有序
参考:
http://www.acmerblog.com/validate-binary-search-treeleetcode-6194.html
/article/7819249.html
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.
A single node tree is a BST
http://www.lintcode.com/en/problem/validate-binary-search-tree/#
1.需要两个值maxValue, minValue 来记录当前节点应该的取值范围。
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /** * @param root: The root of binary tree. * @return: True if the binary tree is BST, or false */ bool helper(TreeNode *node,long minVal,long maxVal){ if(node==NULL){ return true; } if(node->val<=minVal || node->val>=maxVal){ return false; } return helper(node->left,minVal,node->val) & helper(node->right,node->val,maxVal); } bool isValidBST(TreeNode *root) { // write your code here return helper(root,LONG_MIN,LONG_MAX); } };
2.判断中序遍历是否有序
这里写代码片/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /** * @param root: The root of binary tree. * @return: True if the binary tree is BST, or false */ bool helper(TreeNode *root, long & pre){ if(root==NULL){ return true; } if(helper(root->left,pre)==false){ return false; } if(root->val<=pre){ return false; }else{ pre=root->val; } if(helper(root->right,pre)==false){ return false; } return true; } bool isValidBST(TreeNode *root) { // write your code here long pre=LONG_MIN; return helper(root,pre); } };
参考:
http://www.acmerblog.com/validate-binary-search-treeleetcode-6194.html
/article/7819249.html
相关文章推荐
- 棋盘覆盖问题
- 存储或读取SD卡中的内容
- Sublime Text 配置 sass
- 清除Planning服务器端的TMP文件
- 第三周作业2
- 所学的内容
- 20135327郭皓--Linux内核分析第四周 扒开系统调用的三层皮(上)
- LeetCode 299. Bulls and Cows
- 猎豹MFC--进程和线程--创建线程AfxBeginThread() SetDlgItemInt()线程暂停继续终止
- linux 内核分析-第四周
- 多表查询
- 速战速决---3小时快速搭建Exchange+SFB(6)
- MySQL常用函数
- 计算随机抛1000次的骰子各个数字产生的概率。
- kd-tree in Python
- javascript中的原型和原型链
- elecworks 电缆型号管理器
- 循环引用 场景
- red hat enterprise linux 6.0装好了进不了图形界面
- Spring security oauth2最简单入门环境搭建--二、干货