Untitled
unknown
plain_text
a month ago
2.3 kB
4
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