Untitled
unknown
plain_text
a year ago
2.3 kB
17
Indexable
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinarySearchTree:
def __init__(self):
self.root = None
def insert(self, value):
if self.root is None:
self.root = Node(value)
else:
self._insert(self.root, value)
def _insert(self, current, value):
if value < current.value:
if current.left is None:
current.left = Node(value)
else:
self._insert(current.left, value)
else:
if current.right is None:
current.right = Node(value)
else:
self._insert(current.right, value)
def preorder(self, node, result):
if node is not None:
result.append(str(node.value))
self.preorder(node.left, result)
self.preorder(node.right, result)
def inorder(self, node, result):
if node is not None:
self.inorder(node.left, result)
result.append(str(node.value))
self.inorder(node.right, result)
def postorder(self, node, result):
if node is not None:
self.postorder(node.left, result)
self.postorder(node.right, result)
result.append(str(node.value))
def main():
import sys
input = sys.stdin.read
data = input().splitlines()
C = int(data[0])
index = 1
results = []
for case in range(1, C + 1):
N = int(data[index])
index += 1
values = list(map(int, data[index].split()))
index += 1
bst = BinarySearchTree()
for value in values:
bst.insert(value)
preorder_result = []
bst.preorder(bst.root, preorder_result)
inorder_result = []
bst.inorder(bst.root, inorder_result)
postorder_result = []
bst.postorder(bst.root, postorder_result)
results.append(f"Case {case}:")
results.append("Pre.: " + " ".join(preorder_result))
results.append("In..: " + " ".join(inorder_result))
results.append("Post: " + " ".join(postorder_result))
if case < C:
results.append("")
sys.stdout.write("\n".join(results) + "\n")
if __name__ == "__main__":
main()
Editor is loading...
Leave a Comment