Bắt đầu ngayBắt đầu miễn phí

Dùng duyệt pre-order với ký pháp Ba Lan (Polish notation)

Cây biểu thức là một dạng cây nhị phân dùng để biểu diễn các biểu thức số học:

Graphical representation of a binary tree that has arithmetic expressions.

Bằng cách áp dụng duyệt in-order cho một cây biểu thức, bạn sẽ thu được ký pháp trung tố (infix). Với cây đã cho, ký pháp này sẽ là (10-5)*3.

Bằng cách áp dụng duyệt pre-order cho một cây biểu thức, bạn sẽ thu được ký pháp tiền tố (prefix), còn gọi là ký pháp Ba Lan (Polish notation), trong đó toán tử đứng trước các toán hạng. Với cây đã cho, ký pháp này sẽ là *-10 5 3.

Bằng cách áp dụng duyệt post-order cho một cây biểu thức, bạn sẽ thu được ký pháp hậu tố (postfix), còn gọi là ký pháp Ba Lan đảo (reverse Polish notation), trong đó toán tử đứng sau các toán hạng. Với cây đã cho, ký pháp này sẽ là 10 5- 3*.

Hãy viết mã duyệt pre-order để bạn có thể thu được ký pháp tiền tố của cây biểu thức này.

Bài tập này là một phần của khóa học

Cấu trúc dữ liệu và Thuật toán với Python

Xem khóa học

Hướng dẫn bài tập

  • Kiểm tra xem current_node có tồn tại không.
  • In giá trị của current_node.
  • Gọi đệ quy hàm pre_order() trên các nhánh phù hợp của cây.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

import queue

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

  def pre_order(self, current_node):
    # Check if current_node exists
    ____:
      # Print the value of the current_node
      ____
      # Call pre_order recursively on the appropriate half of the tree
      ____
      ____
          
et = CreateExpressionTree()
et.pre_order(et.root)
Chỉnh sửa và Chạy Mã