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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy