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 2
yêu cầu 2 đối số - một bên trái và một bên phải
A 1
yêu cầu một đối số duy nhất - sang trái hoặc phải
A 0
khô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 2
sẽ đượ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)))
0120210
cũ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.
101
cũng mơ hồ.
10201
đầu vào hợp lệ?