Skip to content

Commit 8aaddc1

Browse files
author
Jessica Yung
committed
feat(icake): add problem 8 superbalanced binary trees
1 parent f28b563 commit 8aaddc1

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

interview-cake/p8.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class BinaryTreeNode:
2+
def __init__(self, value):
3+
self.value = value
4+
self.left = None
5+
self.right = None
6+
7+
def insert_left(self, value):
8+
self.left = BinaryTreeNode(value)
9+
return self.left
10+
11+
def insert_right(self, value):
12+
self.right = BinaryTreeNode(value)
13+
return self.right
14+
15+
16+
def is_superbalanced(root):
17+
18+
# Initialise variables
19+
max_depth = 1
20+
min_depth = None
21+
not_ended = []
22+
for node in [root.left, root.right]:
23+
if node is not None:
24+
not_ended.append(node)
25+
26+
while not_ended is not None:
27+
layer_nodes = not_ended
28+
29+
# Reset variables
30+
ended = 0
31+
not_ended = []
32+
33+
# Go through nodes in layer and check if any have ended
34+
for node in layer_nodes:
35+
if node.left is None and node.right is None:
36+
ended += 1
37+
if min_depth is None:
38+
min_depth = max_depth
39+
else:
40+
not_ended.append(node)
41+
42+
# Check if tree seems superbalanced so far
43+
if max_depth - min_depth > 1:
44+
return False
45+
46+
return True

0 commit comments

Comments
 (0)