Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit a0f55be

Browse files
largest BST subtree
1 parent 812cf1e commit a0f55be

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package medium;
2+
3+
import classes.TreeNode;
4+
5+
public class LargestBSTSubtree {
6+
7+
public int largestBSTSubtree(TreeNode root) {
8+
if(root == null) return 0;
9+
if(isBST(root)) return getNodes(root);
10+
return Math.max(find(root.left), find(root.right));
11+
}
12+
13+
int find(TreeNode root){
14+
if(isBST(root)) return getNodes(root);
15+
return Math.max(find(root.left), find(root.right));
16+
}
17+
18+
int getNodes(TreeNode root){
19+
if(root == null) return 0;
20+
return dfsCount(root);
21+
}
22+
23+
int dfsCount(TreeNode root){
24+
if(root == null) return 0;
25+
return dfsCount(root.left) + dfsCount(root.right) + 1;
26+
}
27+
28+
boolean isBST(TreeNode root){
29+
if(root == null) return true;
30+
return dfs(root, Long.MIN_VALUE, Long.MAX_VALUE);
31+
}
32+
33+
boolean dfs(TreeNode root, long min, long max){
34+
if(root == null) return true;
35+
if(root.val <= min || root.val >= max) return false;
36+
return dfs(root.left, min, root.val) && dfs(root.right, root.val, max);
37+
}
38+
39+
}

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
|349|[Intersection of Two Arrays](https://leetcode.com/problems/intersection-of-two-arrays/)|[Solution](../../blob/master/EASY/src/easy/IntersectionOfTwoArrays.java)| O(m+n)|O(min(m,n)) | Easy| Two Pointers, Binary Search
4040
|346|[Moving Average from Data Stream](https://leetcode.com/problems/moving-average-from-data-stream/)|[Solution](../../blob/master/EASY/src/easy/MovingAveragefromDataStream.java)| O(1)|O(w)) | Easy| Queue
4141
|339|[Nested List Weight Sum](https://leetcode.com/problems/nested-list-weight-sum/)|[Solution](../../blob/master/EASY/src/easy/NestedListWeightSum.java)| O(n)|O(h)) | Easy| DFS
42-
|338|[Counting Bits](https://leetcode.com/problems/counting-bits/)|[Solution](../../blob/master/MEDIUM/src/medium/CountingBits.java)| O(n)|O(n) | Medium|
42+
|338|[Counting Bits](https://leetcode.com/problems/counting-bits/)|[Solution](../../blob/master/MEDIUM/src/medium/CountingBits.java)| O(nlogn)|O(h) | Medium|
43+
|333|[Largest BST Subtree](https://leetcode.com/problems/largest-bst-subtree/)|[Solution](../../blob/master/MEDIUM/src/medium/LargestBSTSubtree.java)| O(n)|O(n) | Medium|
4344
|325|[Maximum Size Subarray Sum Equals k](https://leetcode.com/problems/maximum-size-subarray-sum-equals-k/)|[Solution] | O(n)|O(n) | Medium| HashMap
4445
|314|[Binary Tree Vertical Order Traversal](https://leetcode.com/problems/binary-tree-vertical-order-traversal/)|[Solution](../../blob/master/MEDIUM/src/medium/BinaryTreeVerticalOrderTraversal.java)| O(n)|O(n) | Medium| HashMap, BFS
4546
|311|[Sparse Matrix Multiplication](https://leetcode.com/problems/sparse-matrix-multiplication/)|[Solution](../../blob/master/MEDIUM/src/medium/SparseMatrixMultiplication.java)| O(m*n*l)|O(m*l)| Medium|

0 commit comments

Comments
 (0)