[go: up one dir, main page]

0% found this document useful (0 votes)
52 views6 pages

Alva

This document discusses converting code for algorithms and data structures from Python to Python. It includes code for a binary tree class with methods for insertion, deletion, and traversal (preorder, inorder, postorder). The code is tested in a console menu interface that allows the user to insert nodes, delete nodes, and perform different traversals on the binary tree.

Uploaded by

Litcht
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views6 pages

Alva

This document discusses converting code for algorithms and data structures from Python to Python. It includes code for a binary tree class with methods for insertion, deletion, and traversal (preorder, inorder, postorder). The code is tested in a console menu interface that allows the user to insert nodes, delete nodes, and perform different traversals on the binary tree.

Uploaded by

Litcht
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

TUGAS

PRAKTIKUM ALGORITMA & STRUKTUR DATA


MENGUBAH CODE KE DALAM BAHASA PYTHON

Disusun oleh:
Alvarizqky putra K.R (2206109)

TEKNIK INFORMATIKA
INSTITUT TEKNOLOGI GARUT
2022
1. CODE PROGRAM
class Tree:
def __init__(self, info):
self.info = info
self.left = None
self.right = None

class BinaryTree:
def __init__(self):
self.root = None

def insert(self, info):


if self.root is None:
self.root = Tree(info)
else:
self._insert(self.root, info)

def _insert(self, node, info):


if info < node.info:
if node.left is None:
node.left = Tree(info)
else:
self._insert(node.left, info)
else:
if node.right is None:
node.right = Tree(info)
else:
self._insert(node.right, info)

def delete(self, key):

2
self.root = self._delete(self.root, key)

def _delete(self, node, key):


if node is None:
return node

if key < node.info:


node.left = self._delete(node.left, key)
elif key > node.info:
node.right = self._delete(node.right, key)
else:
if node.left is None:
return node.right
elif node.right is None:
return node.left

temp = self._find_min(node.right)
node.info = temp.info
node.right = self._delete(node.right, temp.info)

return node

def _find_min(self, node):


current = node
while current.left is not None:
current = current.left
return current

def preorder_traversal(self):
self._preorder_traversal(self.root)

3
def _preorder_traversal(self, node):
if node is not None:
print(node.info, end=" ")
self._preorder_traversal(node.left)
self._preorder_traversal(node.right)

def inorder_traversal(self):
self._inorder_traversal(self.root)

def _inorder_traversal(self, node):


if node is not None:
self._inorder_traversal(node.left)
print(node.info, end=" ")
self._inorder_traversal(node.right)

def postorder_traversal(self):
self._postorder_traversal(self.root)

def _postorder_traversal(self, node):


if node is not None:
self._postorder_traversal(node.left)
self._postorder_traversal(node.right)
print(node.info, end=" ")

if __name__ == '__main__':
bt = BinaryTree()

while True:
print("1. Insert")
print("2. Delete")

4
print("3. Preorder Traversal")
print("4. Inorder Traversal")
print("5. Postorder Traversal")
print("6. Exit")

choice = int(input("Enter your choice: "))

if choice == 1:
n = int(input("Enter item: "))
bt.insert(n)
elif choice == 2:
key = int(input("Enter element to delete: "))
bt.delete(key)
elif choice == 3:
print()
bt.preorder_traversal()
print()
elif choice == 4:
print()
bt.inorder_traversal()
print()
elif choice == 5:
print()
bt.postorder_traversal()
print()
elif choice == 6:
break

5
2. CONSOLE

You might also like