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