File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11class 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-
1114class 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-
5077if __name__ == "__main__" :
5178 import doctest
52-
5379 doctest .testmod ()
You can’t perform that action at this time.
0 commit comments