lintcode validate-binary-search-tree 验证二叉查找树
来源:互联网 发布:淘宝贝高瞻幼儿园收费 编辑:程序博客网 时间:2024/05/21 08:36
问题描述
lintcode
笔记
- 代码1是用到中序遍历,要求中序遍历是严格的增序。用到了辅助空间。
- 代码2是leetcode上面的解法,用到了prev指针记录前一个节点,省下了辅助空间,而且要注意prev传进去还应该是引用。
代码1
/** * 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 isValidBST(TreeNode *root) { // write your code here vector<int> res; res.clear(); Inorder(root, res); if (res.empty() || res.size() == 1) return true; for (int i = 0; i < res.size() - 1; i++) { if (res[i] >= res[i+1]) return false; } return true; } void Inorder(TreeNode *root, vector<int> &res) { if (root == NULL) return; Inorder(root->left, res); res.push_back(root->val); Inorder(root->right, res); }};
代码2
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isValidBST(TreeNode* root) { TreeNode *pre = NULL; return validate(root, pre); } bool validate(TreeNode *root, TreeNode *&pre) { if (root == NULL) return true; if (!validate(root->left, pre)) return false; if (pre != NULL && pre->val >= root->val)// 如果当前还是NULL那就先不管吧,继续往下运行。 return false; pre = root; return validate(root->right, pre); }};
0 0
- lintcode validate-binary-search-tree 验证二叉查找树
- **[Lintcode]Validate Binary Search Tree 验证二叉查找树
- Leetcode 98 Validate Binary Search Tree 验证二叉查找树
- 【LeetCode】Validate Binary Search Tree 验证二叉查找树
- 95.Validate Binary Search Tree-验证二叉查找树(中等题)
- 判断二叉查找树的合法性 Validate Binary Search Tree
- Validate Binary Search Tree 有效的二叉查找树
- 二叉查找树——Validate Binary Search Tree
- 【LeetCode】Validate Binary Search Tree 二叉查找树的判断
- lintcode:Validate Binary Search Tree
- 20150624 lintcode 总结 Validate Binary Search Tree
- Validate Binary Search Tree--判断一个树是不是二叉查找树(重重重)
- LeetCode OJ 之 Validate Binary Search Tree (验证二叉搜索树)
- 【LeetCode-面试算法经典-Java实现】【098-Validate Binary Search Tree(验证二叉搜索树)】
- Leetcode 98. Validate Binary Search Tree 验证二叉搜索树 解题报告
- LintCode Insert a Node in a Binary Search Tree 在二叉查找树中插入节点
- lintcode insert-node-in-a-binary-search-tree 在二叉查找树中插入节点
- 二叉查找树(Binary Search Tree)
- 气象相关基本知识
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- sql\mysql\oralce 表名更改
- Linux/Unix笔记本
- FFmpeg架构之I/O模块分析
- lintcode validate-binary-search-tree 验证二叉查找树
- 【POJ】3370 - Halloween treats(抽屉原理 & STL)
- 360 ie8兼容模式 网页兼容问题
- 简单的小游戏---代码实现三子棋
- linux & windows 安装redis
- java se作业3-打印文件路径-2016.7.22
- 3.5黄金5花环
- HDOJ-2111 Saving HDU
- HDOJ 5734 (2016多校联合训练 Training Contest 2) Acperience