Skip to content

Commit ed5b96b

Browse files
committed
alg [pepeny] new alg binary tree
1 parent a71618f commit ed5b96b

2 files changed

Lines changed: 49 additions & 0 deletions

File tree

height_of_tree/__init__.py

Whitespace-only changes.

height_of_tree/tree.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
class Node:
2+
def __init__(self, info):
3+
self.info = info
4+
self.left = None
5+
self.right = None
6+
7+
def __str__(self):
8+
return str(self.info)
9+
10+
11+
class BinarySearchTree:
12+
def __init__(self):
13+
self.root = None
14+
15+
def create(self, val):
16+
if self.root == None:
17+
self.root = Node(val)
18+
else:
19+
current = self.root
20+
while True:
21+
if val < current.info:
22+
if current.left:
23+
current = current.left
24+
else:
25+
current.left = Node(val)
26+
break
27+
elif val > current.info:
28+
if current.right:
29+
current = current.right
30+
else:
31+
current.right = Node(val)
32+
break
33+
else:
34+
break
35+
36+
def height(node):
37+
if node is None:
38+
return -1
39+
return 1 + max(height(node.left), height(node.right))
40+
41+
def tree_height_from_list(data):
42+
bst = BinarySearchTree()
43+
for x in data:
44+
bst.create(x)
45+
return height(bst.root)
46+
47+
if __name__ == "__main__":
48+
import doctest
49+
doctest.testmod()

0 commit comments

Comments
 (0)