113 lines
2.6 KiB
Python
Executable File
113 lines
2.6 KiB
Python
Executable File
# Class describing a node of tree
|
|
class Node:
|
|
def __init__(self, v):
|
|
self.left = None
|
|
self.right = None
|
|
self.data = v
|
|
|
|
def insert(self, v):
|
|
if self.data:
|
|
if v < self.data:
|
|
if self.left is None:
|
|
self.left = Node(v)
|
|
else:
|
|
self.left.insert(v)
|
|
elif v > self.data:
|
|
if self.right is None:
|
|
self.right = Node(v)
|
|
else:
|
|
self.right.insert(v)
|
|
else:
|
|
self.data = v
|
|
|
|
def printTree(self):
|
|
if self.left:
|
|
self.left.printTree()
|
|
print(chr(self.data), end=" ")
|
|
if self.right:
|
|
self.right.printTree()
|
|
|
|
# Inorder Traversal
|
|
def printInorder(root):
|
|
if root:
|
|
# Traverse left subtree
|
|
printInorder(root.left)
|
|
|
|
# Visit node
|
|
print(chr(root.data), end=" ")
|
|
|
|
# Traverse right subtree
|
|
printInorder(root.right)
|
|
|
|
|
|
# Preorder Traversal
|
|
def printPostOrder(node):
|
|
if node is None:
|
|
return
|
|
|
|
# Traverse left subtree
|
|
printPostOrder(node.left)
|
|
|
|
# Traverse right subtree
|
|
printPostOrder(node.right)
|
|
|
|
# Visit Node
|
|
print(chr(node.data), end=" ")
|
|
|
|
|
|
# Preorder Traversal
|
|
def printPreOrder(node):
|
|
if node is None:
|
|
return
|
|
# Visit Node
|
|
print(chr(node.data), end=" ")
|
|
|
|
# Traverse left subtree
|
|
printPreOrder(node.left)
|
|
|
|
# Traverse right subtree
|
|
printPreOrder(node.right)
|
|
|
|
|
|
# Driver code
|
|
if __name__ == "__main__":
|
|
# Build the tree
|
|
root = Node(ord('E'))
|
|
#root.left = Node(ord('A'))
|
|
#root.right = Node(ord('S'))
|
|
#root.right.right = Node(ord('Y'))
|
|
#root.right.right.left = Node(ord('U'))
|
|
#root.right.right.left.left = Node(ord('S'))
|
|
#root.right.right.left.left.right = Node(ord('T'))
|
|
#root.right.left = Node(ord('Q'))
|
|
#root.right.left.left = Node(ord('E'))
|
|
#root.right.left.left.right = Node(ord('I'))
|
|
#root.right.left.left.right.right = Node(ord('O'))
|
|
#root.right.left.left.right.right.left = Node(ord('N'))
|
|
|
|
# Insert EASYQUESTION
|
|
root.insert(ord('A'))
|
|
root.insert(ord('S'))
|
|
root.insert(ord('Y'))
|
|
root.insert(ord('Q'))
|
|
root.insert(ord('U'))
|
|
root.insert(ord('E'))
|
|
root.insert(ord('I'))
|
|
root.insert(ord('O'))
|
|
root.insert(ord('N'))
|
|
|
|
# Print the tree
|
|
print("Tree:")
|
|
root.printTree()
|
|
|
|
|
|
# Function call
|
|
print("Inorder Traversal:", end=" ")
|
|
printInorder(root)
|
|
print("\nPreorder Traversal:", end=" ")
|
|
printPreOrder(root)
|
|
print("\nPostorder Traversal:", end=" ")
|
|
printPostOrder(root)
|
|
|
|
# This code is contributed by ajaymakvana.
|