-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBinarytree.py
More file actions
78 lines (66 loc) · 2.15 KB
/
Binarytree.py
File metadata and controls
78 lines (66 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, data):
if self.root is None:
self.root = Node(data)
else:
self._insert_node(self.root, data)
def _insert_node(self, root, data):
if data < root.data:
if root.left is None:
root.left = Node(data)
else:
self._insert_node(root.left, data)
else:
if root.right is None:
root.right = Node(data)
else:
self._insert_node(root.right, data)
def in_order_traversal(self):
print("In-order Traversal:", end=" ")
self._in_order_traversal(self.root)
print()
def _in_order_traversal(self, root):
if root:
self._in_order_traversal(root.left)
print(root.data, end=" ")
self._in_order_traversal(root.right)
def pre_order_traversal(self):
print("Pre-order Traversal:", end=" ")
self._pre_order_traversal(self.root)
print()
def _pre_order_traversal(self, root):
if root:
print(root.data, end=" ")
self._pre_order_traversal(root.left)
self._pre_order_traversal(root.right)
def post_order_traversal(self):
print("Post-order Traversal:", end=" ")
self._post_order_traversal(self.root)
print()
def _post_order_traversal(self, root):
if root:
self._post_order_traversal(root.left)
self._post_order_traversal(root.right)
print(root.data, end=" ")
# Example usage:
if __name__ == "__main__":
tree = BinaryTree()
# Insert nodes into the binary tree
tree.insert(50)
tree.insert(30)
tree.insert(20)
tree.insert(40)
tree.insert(70)
tree.insert(60)
tree.insert(80)
# Print traversals
tree.in_order_traversal() # Output: 20 30 40 50 60 70 80
tree.pre_order_traversal() # Output: 50 30 20 40 70 60 80
tree.post_order_traversal() # Output: 20 40 30 60 80 70 50