Skip to content

Commit 16cf462

Browse files
authored
Update tree.py
1 parent 02b212d commit 16cf462

1 file changed

Lines changed: 45 additions & 15 deletions

File tree

height_of_tree/tree.py

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,32 @@
1+
from typing import Optional, List
2+
13
class Node:
2-
def __init__(self, info):
3-
self.info = info
4-
self.left = None
5-
self.right = None
4+
def __init__(self, info: int) -> None:
5+
self.info: int = info
6+
self.left: Optional["Node"] = None
7+
self.right: Optional["Node"] = None
68

7-
def __str__(self):
9+
def __str__(self) -> str:
10+
"""
11+
>>> str(Node(5))
12+
'5'
13+
"""
814
return str(self.info)
915

10-
1116
class BinarySearchTree:
12-
def __init__(self):
13-
self.root = None
17+
def __init__(self) -> None:
18+
self.root: Optional[Node] = None
1419

15-
def create(self, val):
20+
def create(self, val: int) -> None:
21+
"""
22+
>>> bst = BinarySearchTree()
23+
>>> bst.create(10)
24+
>>> bst.root.info
25+
10
26+
>>> bst.create(5)
27+
>>> bst.root.left.info
28+
5
29+
"""
1630
if self.root is None:
1731
self.root = Node(val)
1832
else:
@@ -33,21 +47,37 @@ def create(self, val):
3347
else:
3448
break
3549

36-
37-
def height(node):
50+
def height(node: Optional[Node]) -> int:
51+
"""
52+
>>> height(None)
53+
-1
54+
>>> n = Node(3)
55+
>>> height(n)
56+
0
57+
>>> n.left = Node(2)
58+
>>> n.right = Node(5)
59+
>>> n.right.right = Node(6)
60+
>>> height(n)
61+
2
62+
"""
3863
if node is None:
3964
return -1
4065
return 1 + max(height(node.left), height(node.right))
4166

42-
43-
def tree_height_from_list(data):
67+
def tree_height_from_list(data: List[int]) -> int:
68+
"""
69+
>>> tree_height_from_list([3,2,5,6])
70+
2
71+
>>> tree_height_from_list([1])
72+
0
73+
>>> tree_height_from_list([5,1,10,15,7])
74+
3
75+
"""
4476
bst = BinarySearchTree()
4577
for x in data:
4678
bst.create(x)
4779
return height(bst.root)
4880

49-
5081
if __name__ == "__main__":
5182
import doctest
52-
5383
doctest.testmod()

0 commit comments

Comments
 (0)