Cho một chuỗi chỉ chứa 0 '1, 2 và ngoặc, xuất ra cây ngữ pháp của chuỗi.
A 2yêu cầu 2 đối số - một bên trái và một bên phải
A 1yêu cầu một đối số duy nhất - sang trái hoặc phải
A 0không yêu cầu bất kỳ đối số và là trường hợp cơ sở
Một cặp dấu ngoặc được tính là một đối số và nội dung của dấu ngoặc được đánh giá tách biệt với phần còn lại của chuỗi. Dấu ngoặc lồng là có thể
Một chuỗi đầu vào sẽ luôn là một cây hoàn chỉnh không có ký tự rơi ra. Chuỗi cũng sẽ chỉ có một giải pháp đúng duy nhất. Lưu ý rằng các hàm là giao hoán và bất kỳ sự sắp xếp các đối số cho 2sẽ được chấp nhận. Bạn sẽ không phải xử lý đầu vào không phù hợp với các yêu cầu này.
Định dạng ngữ pháp đầu ra sẽ ở dạng function(arguments)đệ quy
Các trường hợp thử nghiệm
0 --> 0
01 --> 1(0)
020 --> 2(0,0)
101 --> 1(1(0))
0120 --> 2(1(0),0)
0120210 --> 2(1(0),2(0,1(0)))
01210 --> 2(1(0),1(0))
(020)210 --> 2(2(0,0),1(0))
((020)20)1 --> 1(2(0,2(0,0)))
0120210cũng không thể được phân tích cú pháp khi 2[4](2[2](1[1](0[0]), 0[3]), 1[5](0[6]))các số được đặt trong ngoặc chỉ vị trí trong chuỗi.
101cũng mơ hồ.
10201đầu vào hợp lệ?