File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
0865_Smallest Subtree with all the Deepest Nodes Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ private List <TreeNode > list = new ArrayList <>();
3+ private int deepestLevel = 0 ;
4+
5+ public TreeNode subtreeWithAllDeepest (TreeNode root ) {
6+ if (root == null ) return null ;
7+ getDeepestNodes (root ,1 );
8+ return lowerestCommenAncestor (root , list );
9+ }
10+
11+ private void getDeepestNodes (TreeNode node , int level ) {
12+ if (node == null ) return ;
13+ if (level >= deepestLevel ) {
14+ if (level > deepestLevel ){
15+ list .clear ();
16+ deepestLevel = level ;
17+ }
18+ list .add (node );
19+ }
20+ getDeepestNodes (node .left , level +1 );
21+ getDeepestNodes (node .right , level +1 );
22+
23+ }
24+
25+ private TreeNode lowerestCommenAncestor (TreeNode node , List <TreeNode > list ) {
26+ if (node == null ) return null ;
27+ for (TreeNode n : list ) {
28+ if (node == n ) return node ;
29+ }
30+ TreeNode left = lowerestCommenAncestor (node .left , list );
31+ TreeNode right = lowerestCommenAncestor (node .right , list );
32+ if (left != null && right != null ) {
33+ return node ;
34+ }else if (left != null ){
35+ return left ;
36+ }else {
37+ return right ;
38+ }
39+ }
40+ }
You can’t perform that action at this time.
0 commit comments