Binary Tree Traversal in Python - In Order, Pre Order, Post Order
Run the code here to see output: https://repl.it/@VinitKhandelwal/iterative-traversal-of-binary-tree
# PreOrder Traversal
# InOrder Traversal
# Running the traversals for output
5
15
10
25
35
30
20
Pre Order
20
10
5
15
30
25
35
In Order
5
10
15
20
25
30
35
Run the code here to see output: https://repl.it/@VinitKhandelwal/iterative-traversal-of-binary-tree
# Node Class to Create Object of Nodes
class Node():
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
# Creation of a Binary Tree
class BinaryTree():
def __init__(self, mylist):
self.mylist = mylist
self.root=Node(None)
for value in self.mylist:
self.curr=self.root
self._add(value)
def _add(self, value):
if self.curr.value == None:
self.curr.value = value
else:
if self.curr.value > value:
if self.curr.left == None:
self.curr.left = Node(value)
else:
self.curr = self.curr.left
self._add(value)
else:
if self.curr.right == None:
self.curr.right = Node(value)
else:
self.curr = self.curr.right
self._add(value)
obj = BinaryTree([20,10,30,15,5,25,35])
# Traversal Classes
# PostOrder Traversal
class Postorder():
def __init__(self, root):
self.root = root
self.curr = self.root
self._iterate(self.curr)
def _iterate(self, node):
if node.left != None:
self._iterate(node.left)
if node.right != None:
self._iterate(node.right)
print(node.value)
class Preorder():
def __init__(self, root):
self.root = root
self.curr = self.root
self._iterate(self.curr)
def _iterate(self, node):
print(node.value)
if node.left != None:
self._iterate(node.left)
if node.right != None:
self._iterate(node.right)
class Inorder():
def __init__(self, root):
self.root = root
self.curr = self.root
self._iterate(self.curr)
def _iterate(self, node):
if node.left != None:
self._iterate(node.left)
print(node.value)
if node.right != None:
self._iterate(node.right)
# Running the traversals for output
print("Post Order")
Postorder(obj.root)
print("Pre Order")
Preorder(obj.root)
print("In Order")
Inorder(obj.root)
Output
Post Order5
15
10
25
35
30
20
Pre Order
20
10
5
15
30
25
35
In Order
5
10
15
20
25
30
35
Comments
Post a Comment