CSC1108_Labs/Practices/BSTOrder.py

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.