Duyệt cây trong bài mọi con đường về không
Số nguyên dương n nếu phân tích thành tích hai số tự nhiên \(a * b (a<=b)\) thì nó sẽ sinh ra số tự nhiên \(m=(a-1)*(b+1)\) cứ tiếp tục như vậy nếu \(m > 0\) nó tiếp tục sinh ra số tiếp theo. Bài toán đặt ra cho số n nguyên dương nó sẽ sinh ra các con và các con lại tiếp tục sinh ra các cháu ... cứ như vậy tới khi sinh ra tới các số \(0\) thì sẽ tạo thành một cây.
Nam đang học môn Cấu trúc dữ liệu và giải thuật đến bài về Cây và biết rằng có 3 cách duyệt cây: Duyệt cây theo tiền thứ tự, trung thứ tự và hậu thứ tự
- Duyệt cây theo tiền thứ tự (Preorder walk): Duyệt gốc trước rồi đến lần lượt các cây con theo tiền thứ tự
- Duyệt cây theo trung thứ tự (Inorder walk): Duyệt cây con trái nhất (con trưởng) theo trung thứ tự rồi đến gốc rồi đến các cây con còn lại theo trung thứ tự
- Duyệt cây theo hậu thứ tự (Postorder walk): Duyệt lần lượt hết các cây con theo hậu thứ tự rồi đến gốc
Nam băn khoăn là với một số nguyên dương n nhập vào thì nó sẽ sinh ra cái cây thì kết quả duyệt cây như thế nào: Bạn hãy lập trình giúp bạn Nam lớp CNTT2 K58- UTC nhé
Ví dụ \(m= 12\) ta có cây được sinh ra như sau
Input:
Một số tự nhiên n \((1<=n<180)\)
Output:
Gòm 3 dòng lần lượt tương ứng là kết quả duyệt cây theo tiền thứ tự, trung thứ tự và hậu thứ tự
Ví dụ
Input
12
Output
12 0 7 0 10 0 6 0 4 0 3 0
0 12 0 7 0 10 0 6 0 4 0 3
0 0 7 0 0 0 0 3 4 6 10 12
Ví dụ 2
Input
18
Output
18 0 10 0 6 0 4 0 3 0 14 0 8 0 5 0
0 18 0 10 0 6 0 4 0 3 0 14 0 8 0 5
0 0 0 0 0 3 4 6 10 0 0 0 5 8 14 18
Comments