Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python in chỉ nút cây con trái

Xây cây nhị phân, thêm nút trái/phải, sau đó in inorder của cây con trái.

Ví dụ

class BinaryTree:
    def __init__(self, data):
        self.key = data
        self.left = None
        self.right = None

    def inorder(self):
        if self.left:
            self.left.inorder()
        print(self.key, end=' ')
        if self.right:
            self.right.inorder()

    def insert_left(self, node):
        self.left = node

    def insert_right(self, node):
        self.right = node

    def search(self, key):
        if self.key == key:
            return self
        if self.left:
            res = self.left.search(key)
            if res: return res
        if self.right:
            return self.right.search(key)
        return None

    def print_left_subtree(self):
        if self.left:
            self.left.inorder()

# Demo
root = None
while True:
    cmd = input("Cmd (insert/left/quit): ").split()
    if not cmd: continue
    if cmd[0] == 'insert':
        val = int(cmd[1])
        node = BinaryTree(val)
        if cmd[2] == 'at':
            root = node
        else:
            parent = root.search(int(cmd[4]))
            if parent:
                if cmd[2] == 'left':
                    parent.insert_left(node)
                else:
                    parent.insert_right(node)
    elif cmd[0] == 'left':
        if root:
            print("Cây con trái (inorder):", end=' ')
            root.print_left_subtree()
            print()
    elif cmd[0] == 'quit':
        break

Kết quả

Cmd (insert/left/quit): insert 5 at root
Cmd (insert/left/quit): insert 6 left of 5
Cmd (insert/left/quit): insert 8 right of 5
Cmd (insert/left/quit): left
Cây con trái (inorder): 6
Cmd (insert/left/quit): quit

Giải thích

  • Class BinaryTree với left, right.
  • print_left_subtree gọi inorder trên self.left.
  • Inorder: left, root, right -> in các nút cây con trái theo thứ tự tăng dần (nếu BST).
  • Menu: insert at root, insert left/right of key, left (in cây con trái), quit.