LeetCode
来源:互联网 发布:seo教程网 编辑:程序博客网 时间:2024/05/20 13:16
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.
Example 1:
2 / \ 1 3Binary tree
[2,1,3]
, return true.Example 2:
1 / \ 2 3Binary tree
[1,2,3]
, return false.借助先序遍历(中根遍历)来判断是否是二叉查找树。时间复杂度O(n),空间复杂度O(n)
/** * 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) { if (!root) return true; stack<TreeNode*> s; unordered_map<TreeNode*, bool> vis; long ans = LONG_MIN; s.push(root); while (!s.empty()) { TreeNode* cur = s.top(); if (cur->left && vis.find(cur) == vis.end()) { s.push(cur->left); vis[cur] = true; } else { s.pop(); if (cur->val <= ans) return false; ans = cur->val; if (cur->right) s.push(cur->right); } } return true; }};最近一直在避免使用递归,但是递归的方法也还是要会的。
/** * 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) { long long mie = LONG_MIN; return solve(root, mie); } bool solve(TreeNode* root, long long &mie) { if (!root) return true; if (!solve(root->left, mie)) return false; if (root->val <= mie) return false; mie = root->val; return solve(root->right, mie); }};
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- 递归应用
- linux上php配置全局
- java基础类中的File的路径问题
- eclipse中extjs自动提示
- 数学问题——概率法求π的近似值
- LeetCode
- 详解Java动态代理机制
- 架构师之路(二十一)程序员多关注行业内领先技术
- vue环境搭建(有热替换)
- Bzoj 4922(字符串匹配新高度+DP)
- Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) E. Rusty String(fft)
- 判断元素出栈、入栈顺序的合法性
- 多态,抽象作业
- 23种设计模式之——代理模式