11class Node :
2- def __init__ (self , info : int ) -> None :
3- self .info : int = info
4- self .left : Node | None = None
5- self .right : Node | None = None
2+ def __init__ (self , info ) :
3+ self .info = info
4+ self .left = None
5+ self .right = None
66
7- def __str__ (self ) -> str :
8- """
9- >>> str(Node(5))
10- '5'
11- """
7+ def __str__ (self ):
128 return str (self .info )
139
1410
1511class BinarySearchTree :
16- def __init__ (self ) -> None :
17- self .root : Node | None = None
12+ def __init__ (self ):
13+ self .root = None
1814
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- """
15+ def create (self , val ):
2916 if self .root is None :
3017 self .root = Node (val )
3118 else :
@@ -47,51 +34,17 @@ def create(self, val: int) -> None:
4734 break
4835
4936
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- """
37+ def height (node ):
6338 if node is None :
6439 return - 1
6540 return 1 + max (height (node .left ), height (node .right ))
6641
6742
68- def tree_height_from_list (data : list [int ]) -> int :
69- """
70- >>> tree_height_from_list([3,2,5,6])
71- 2
72- >>> tree_height_from_list([1])
73- 0
74- >>> tree_height_from_list([5,1,10,15,7])
75- 3
76- """
77- if not data :
78- return - 1
79- nodes = [Node (val ) for val in data ]
80- q = [nodes [0 ]]
81- i = 1
82- front = 0
83- while i < len (nodes ):
84- curr = q [front ]
85- front += 1
86- if i < len (nodes ):
87- curr .left = nodes [i ]
88- q .append (curr .left )
89- i += 1
90- if i < len (nodes ):
91- curr .right = nodes [i ]
92- q .append (curr .right )
93- i += 1
94- return height (nodes [0 ])
43+ def tree_height_from_list (data ):
44+ bst = BinarySearchTree ()
45+ for x in data :
46+ bst .create (x )
47+ return height (bst .root )
9548
9649
9750if __name__ == "__main__" :
0 commit comments