Skip to content

Commit b1e0d04

Browse files
solves complete tree nodes in java
1 parent 97c3385 commit b1e0d04

File tree

4 files changed

+39
-10
lines changed

4 files changed

+39
-10
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@
178178
| 219 | [Contains Duplicate II](https://leetcode.com/problems/contains-duplicate-ii) | [![Java](assets/java.png)](src/ContainsDuplicateII.java) [![Python](assets/python.png)](python/contains_duplicate_ii.py) | |
179179
| 220 | [Contains Duplicate III](https://leetcode.com/problems/contains-duplicate-iii) | | |
180180
| 221 | [Maximal Square](https://leetcode.com/problems/maximal-square) | | |
181-
| 222 | [Count Complete Tree Nodes](https://leetcode.com/problems/count-complete-tree-nodes) | | |
181+
| 222 | [Count Complete Tree Nodes](https://leetcode.com/problems/count-complete-tree-nodes) | [![Java](assets/java.png)](src/CountCompleteTreeNodes.java) | |
182182
| 223 | [Rectangle Area](https://leetcode.com/problems/rectangle-area) | | |
183183
| 225 | [Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues) | [![Java](assets/java.png)](src/MyStack.java) [![Python](assets/python.png)](python/implement_stack_using_queues.py) | |
184184
| 226 | [Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree) | [![Java](assets/java.png)](src/InvertBinaryTree.java) [![Python](assets/python.png)](python/invert_binary_tree.py) | |

src/CountCompleteTreeNodes.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// https://leetcode.com/problems/count-complete-tree-nodes
2+
// T: O(log(n) ^ 2)
3+
// S: O(log(n))
4+
5+
public class CountCompleteTreeNodes {
6+
private static int depth(TreeNode root) {
7+
if (root == null) return 0;
8+
return 1 + depth(root.left);
9+
}
10+
11+
public static int countNodes(TreeNode root) {
12+
if (root == null) return 0;
13+
int leftDepth = depth(root.left);
14+
int rightDepth = depth(root.right);
15+
return 1 + (leftDepth == rightDepth
16+
? ((1 << leftDepth) - 1) + countNodes(root.right)
17+
: countNodes(root.left) + countNodes(root.right));
18+
}
19+
}

src/TreeNode.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
public class TreeNode {
1+
public class TreeNode implements TreePrinter.PrintableNode {
22
int val;
33
TreeNode left;
44
TreeNode right;
@@ -9,4 +9,19 @@ public class TreeNode {
99
this.left = left;
1010
this.right = right;
1111
}
12+
13+
@Override
14+
public TreePrinter.PrintableNode getLeft() {
15+
return this.left;
16+
}
17+
18+
@Override
19+
public TreePrinter.PrintableNode getRight() {
20+
return this.right;
21+
}
22+
23+
@Override
24+
public String getText() {
25+
return this.val + "";
26+
}
1227
}

src/TreePrinter.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,15 @@
77
*
88
* @author saiteja
99
*/
10-
public class TreePrinter
11-
{
10+
public class TreePrinter {
1211
/** Node that can be printed */
13-
public interface PrintableNode
14-
{
12+
public interface PrintableNode {
1513
/** Get left child */
1614
PrintableNode getLeft();
1715

18-
1916
/** Get right child */
2017
PrintableNode getRight();
2118

22-
2319
/** Get text to be printed */
2420
String getText();
2521
}
@@ -31,8 +27,7 @@ public interface PrintableNode
3127
* @param root
3228
* tree root node
3329
*/
34-
public static void print(PrintableNode root)
35-
{
30+
public static void print(PrintableNode root) {
3631
List<List<String>> lines = new ArrayList<List<String>>();
3732

3833
List<PrintableNode> level = new ArrayList<PrintableNode>();

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