Leetcode 333. Largest BST Subtree (Medium) (cpp)
来源:互联网 发布:w3c php手册下载 编辑:程序博客网 时间:2024/05/19 10:34
Leetcode 333. Largest BST Subtree (Medium) (cpp)
Tag: Tree
Difficulty: Medium
/*333. Largest BST Subtree (Medium)Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest means subtree with largest number of nodes in it.Note:A subtree must include all of its descendants.Here's an example:10/ \5 15/ \ \1 8 7The Largest BST Subtree in this case is the highlighted one.The return value is the subtree's size, which is 3.Hint:You can recursively use algorithm similar to 98. Validate Binary Search Tree at each node of the tree, which will result in O(nlogn) time complexity.*//*** 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:int largestBSTSubtree(TreeNode* root) {int res = 0;largestBSTSubtree(root, res);return res;}private:vector<int> largestBSTSubtree(TreeNode* root, int& res) {if (root == NULL) {return{ 0,0,0 };}else if (root->left == NULL && root->right == NULL) {res = max(res, 1);return{ 1, root->val, root->val };}vector<int> l = largestBSTSubtree(root->left, res), r = largestBSTSubtree(root->right, res);if (l[0] != -1 && r[0] != -1) {if ((l[0] == 0 || root->val > l[2]) && (r[0] == 0 || root->val < r[1])) {res = max(res, l[0] + r[0] + 1);int small = l[1] == 0 ? root->val : l[1], large = r[2] == 0 ? root->val : r[2];return{ l[0] + r[0] + 1, small, large };}}return{ -1,0,0 };}};
0 0
- Leetcode 333. Largest BST Subtree (Medium) (cpp)
- LeetCode 333. Largest BST Subtree
- LeetCode 333. Largest BST Subtree
- leetcode 333. Largest BST Subtree
- [leetcode] 333. Largest BST Subtree 解题报告
- [Leetcode] 333. Largest BST Subtree 解题报告
- 333. Largest BST Subtree
- 333. Largest BST Subtree
- 333. Largest BST Subtree
- Medium 333题 Largest BST Subtree
- LeetCode 333. Largest BST Subtree(最大二叉搜索树)
- Largest BST Subtree
- Largest BST Subtree
- Leetcode 368. Largest Divisible Subset (Medium) (cpp)
- Leetcode 179. Largest Number (Medium) (cpp)
- Leetcode 230. Kth Smallest Element in a BST (Medium) (cpp)
- Leetcode 450. Delete Node in a BST (Medium) (cpp)
- Leetcode 449. Serialize and Deserialize BST (Medium) (cpp)
- php数据库操作-创建库和表以及插入数据
- 重定向 和 转发 的问题
- ORA-39127: unexpected error from call to "WMSYS"."LT_EXPORT_PKG"."SCHEMA_INFO_EXP"
- 第7章 sed、gawk介绍与正则表达式-----------(sed编辑器简单使用)
- Hadoop到底是什么?
- Leetcode 333. Largest BST Subtree (Medium) (cpp)
- 10分钟教会你Mac上搭建Web服务器
- Spring学习之旅(八) Spring Security的使用
- java中设计模式-Strategy(策略模式)
- 个别操作需要有相应的声音提醒,
- Linux 下安装PHP+Apache+Mysql 手记
- 你们怎么看?"网站运营"
- shell脚本操作mysql
- HTML5移动端手机网站开发流程