Skip to content

Commit 82d8cd8

Browse files
committed
new tre algorithm
1 parent 5c688df commit 82d8cd8

2 files changed

Lines changed: 41 additions & 14 deletions

File tree

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

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

1014

1115
class BinarySearchTree:
12-
def __init__(self):
13-
self.root = None
16+
def __init__(self) -> None:
17+
self.root: Node | None = None
1418

15-
def create(self, val):
19+
def create(self, val: int) -> None:
20+
"""
21+
>>> bst = BinarySearchTree()
22+
>>> bst.create(10)
23+
>>> bst.root.info
24+
10
25+
>>> bst.create(5)
26+
>>> bst.root.left.info
27+
5
28+
"""
1629
if self.root is None:
1730
self.root = Node(val)
1831
else:
@@ -33,25 +46,39 @@ def create(self, val):
3346
else:
3447
break
3548

36-
def height(node):
49+
50+
def height(node: Node | None) -> 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+
"""
3763
if node is None:
3864
return -1
3965
return 1 + max(height(node.left), height(node.right))
4066

41-
def tree_height_from_list(data):
67+
68+
def tree_height_from_list(data: list[int]) -> int:
4269
"""
4370
>>> tree_height_from_list([3,2,5,6])
4471
2
4572
>>> tree_height_from_list([1])
4673
0
47-
>>> tree_height_from_list([5,1,10,15,7])
48-
3
4974
"""
5075
bst = BinarySearchTree()
5176
for x in data:
5277
bst.create(x)
5378
return height(bst.root)
5479

80+
5581
if __name__ == "__main__":
5682
import doctest
57-
doctest.testmod()
83+
84+
doctest.testmod()

0 commit comments

Comments
 (0)