Skip to content

Commit 653741d

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

1 file changed

Lines changed: 14 additions & 61 deletions

File tree

height_of_tree/tree.py

Lines changed: 14 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,18 @@
11
class 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

1511
class 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

9750
if __name__ == "__main__":

0 commit comments

Comments
 (0)