File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments