# Preorder traversal
# Root -> Left ->Right
Â
class Node:
Â
   def __init__(self, data):
Â
       self.left = None
       self.right = None
       self.data = data
# Insert Node
   def insert(self, data):
Â
       if self.data:
           if data < self.data:
               if self.left is None:
                   self.left = Node(data)
               else:
                   self.left.insert(data)
           elif data > self.data:
               if self.right is None:
                   self.right = Node(data)
               else:
                   self.right.insert(data)
       else:
           self.data = data
Â
# Print the Tree
   def PrintTree(self):
       if self.left:
           self.left.PrintTree()
       print( self.data),
       if self.right:
           self.right.PrintTree()
Â
Â
   def PreorderTraversal(self, root):
       res = []
       if root:
           res.append(root.data)
           res = res + self.PreorderTraversal(root.left)
           res = res + self.PreorderTraversal(root.right)
       return res
Â
root = Node(27)
root.insert(14)
root.insert(35)
root.insert(10)
root.insert(19)
root.insert(31)
root.insert(42)
print(root.PreorderTraversal(root))