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] So sánh cấu trúc của hai cây cú pháp

    Cho hai biểu thức số học ở dạng tiền tố. Hãy xác định xem hai cây cú pháp AST tương ứng có cùng cấu trúc hay không, theo nghĩa: bỏ qua hoàn toàn tên biến hoặc giá trị cụ thể ở các nút lá (hai lá bất kỳ luôn được coi là tương đương), nhưng tại mỗi vị trí nút trong tương ứng giữa hai cây, toán tử phải giống hệt nhau, và hình dạng cây (số lượng, vị trí các nút con trái/phải) phải trùng khớp.

    Nói cách khác, hai cây "cùng cấu trúc" nếu tồn tại một cách ánh xạ 1-1 giữa các nút của hai cây sao cho: nút gốc ứng với nút gốc; nếu một nút là lá thì nút tương ứng cũng phải là lá; nếu một nút trong có toán tử opopop với con trái/phải L,RL, RL,R thì nút tương ứng cũng phải là nút trong với cùng toán tử opopop, có con trái tương ứng với LLL và con phải tương ứng với RRR (thứ tự trái/phải được giữ nguyên, không được hoán đổi).

    Ví dụ: + a * b c và + x * y z có cùng cấu trúc (YES); + a * b c và + x - y z thì không (NO, vì toán tử ở nhánh phải khác nhau: * so với -).

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

      Hai dòng, mỗi dòng chứa một biểu thức tiền tố, các token cách nhau bởi một khoảng trắng. Toán tử nhị phân thuộc {+,−,∗,/,∧}\{+, -, *, /, \wedge\}{+,−,∗,/,∧} (^). Toán hạng là một chữ cái thường hoặc một số nguyên không âm. Đề bài đảm bảo cả hai biểu thức hợp lệ.

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

      In ra YES nếu hai cây cú pháp có cùng cấu trúc theo định nghĩa trên, ngược lại in NO (không phân biệt hoa/thường, in đúng như trên).

    Ví dụ:

    Đầu vào:

    + a * b c
    + x * y z

    Đầu ra:

    YES
    

    Đầu vào:

    + a * b c
    + x - y z

    Đầu ra:

    NO
    

    Đang tải editor...