Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Cây biểu thức từ hậu tố: tiền tố, chiều cao, số lá

    Trong trình biên dịch, biểu thức thường được biểu diễn nội bộ dưới dạng cây biểu thức (expression tree/AST): mỗi lá là một toán hạng, mỗi nút trong là một toán tử hai ngôi với con trái/con phải là hai toán hạng con của nó. Biểu thức hậu tố tương ứng chính là kết quả duyệt cây theo thứ tự hậu thứ tự (post-order).

    Cho một biểu thức hậu tố hợp lệ, toán hạng là số nguyên hoặc biến (một chữ cái thường a-z), toán tử hai ngôi +,−,×,÷,^+,-,\times,\div,\hat{}+,−,×,÷,^ (+ - * / ^). Hãy dựng cây biểu thức tương ứng rồi in ra:

    1. Biểu thức tiền tố (prefix, duyệt tiền thứ tự) tương ứng.
    2. Chiều cao của cây, quy ước cây chỉ có một nút (một lá duy nhất) có chiều cao 000, chiều cao của một nút trong bằng 1+max⁡1 + \max1+max chiều cao hai cây con.
    3. Số lá (số toán hạng) của cây.

    Ví dụ: hậu tố a b + c * có cây với gốc *, con trái là cây con +(a,b), con phải là lá c; tiền tố là * + a b c, chiều cao 222, số lá 333.

    • Định dạng đầu vào:

      Một dòng duy nhất chứa biểu thức hậu tố, các token cách nhau bởi đúng một khoảng trắng.

    • Định dạng đầu ra:

      In ra đúng 3 dòng:

      • Dòng 1: biểu thức tiền tố, các token cách nhau bởi đúng một khoảng trắng.
      • Dòng 2: một số nguyên là chiều cao của cây.
      • Dòng 3: một số nguyên là số lá của cây.

    Ví dụ:

    Đầu vào:

    a b +

    Đầu ra:

    + a b
    1
    2
    

    Đầu vào:

    x

    Đầu ra:

    x
    0
    1
    

    Đang tải editor...