Untitled

 avatar
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