Skip to content

Commit c478bf4

Browse files
authored
Update tree.py
1 parent 653741d commit c478bf4

1 file changed

Lines changed: 40 additions & 14 deletions

File tree

height_of_tree/tree.py

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
class Node:
2-
def __init__(self, info):
2+
def __init__(self, info: int) -> None:
33
self.info = info
4-
self.left = None
5-
self.right = None
4+
self.left: 'Node|None' = None
5+
self.right: 'Node|None' = None
66

7-
def __str__(self):
7+
def __str__(self) -> str:
8+
"""
9+
>>> str(Node(5))
10+
'5'
11+
"""
812
return str(self.info)
913

10-
1114
class BinarySearchTree:
12-
def __init__(self):
13-
self.root = None
15+
def __init__(self) -> None:
16+
self.root: 'Node|None' = None
1417

15-
def create(self, val):
18+
def create(self, val: int) -> None:
19+
"""
20+
>>> bst = BinarySearchTree()
21+
>>> bst.create(10)
22+
>>> bst.root.info
23+
10
24+
>>> bst.create(5)
25+
>>> bst.root.left.info
26+
5
27+
"""
1628
if self.root is None:
1729
self.root = Node(val)
1830
else:
@@ -33,21 +45,35 @@ def create(self, val):
3345
else:
3446
break
3547

36-
37-
def height(node):
48+
def height(node: 'Node|None') -> int:
49+
"""
50+
>>> height(None)
51+
-1
52+
>>> n = Node(3)
53+
>>> height(n)
54+
0
55+
>>> n.left = Node(2)
56+
>>> n.right = Node(5)
57+
>>> n.right.right = Node(6)
58+
>>> height(n)
59+
2
60+
"""
3861
if node is None:
3962
return -1
4063
return 1 + max(height(node.left), height(node.right))
4164

42-
43-
def tree_height_from_list(data):
65+
def tree_height_from_list(data: list[int]) -> int:
66+
"""
67+
>>> tree_height_from_list([3,2,5,6])
68+
2
69+
>>> tree_height_from_list([1])
70+
0
71+
"""
4472
bst = BinarySearchTree()
4573
for x in data:
4674
bst.create(x)
4775
return height(bst.root)
4876

49-
5077
if __name__ == "__main__":
5178
import doctest
52-
5379
doctest.testmod()

0 commit comments

Comments
 (0)