Cây tìm kiếm nhị phân
Xem PDF
Điểm:
1600 (p)
Thời gian:
2.0s
Bộ nhớ:
1G
Input:
bàn phím
Output:
màn hình
Cây tìm kiếm nhị phân (BST - Binary Search Tree) là một cấu trúc dữ liệu rất thuận lợi cho bài toán tìm kiếm. Cây tìm kiếm ứng với \(n\) khóa là cây nhị phân mà mỗi nút đều được gán một khóa sao cho với mỗi mỗi nút \(k\):
- Mọi khóa trên cây con trái đều nhỏ hơn khóa trên nút \(k\);
- Mọi khóa trên cây con phải đều lớn hơn khóa trên nút \(k\).
Trong bài toán này, chúng ta xét các khóa có giá trị tương ứng \(1, 2, \dots, n\) và cần dựng cây tìm kiếm nhị phân mà độ cao không vượt quá \(h\), độ cao của cây được định nghĩa như sau:
- Nút lá có độ cao bằng \(1\);
- Một nút trong có độ cao bằng \(\max\) độ cao các nút con trái hoặc phải cộng \(1\).
Input
- Gồm một dòng chứa hai số nguyên \(n, h\) (\(h \le 30\)).
Output
- In ra một hoán vị có thứ tự từ điển nhỏ nhất mô tả thứ tự các khóa được đưa vào cây để tạo thành cây tìm kiếm nhị phân thỏa mãn điều kiện. Nếu không có phương án, ghi \(-1\).
Example
Test 1
Input
4 1
Output
-1
Test 2
Input
4 3
Output
1 3 2 4
Scoring
- Subtask \(1\) (\(20\%\) số điểm): \(n \le 10\).
- Subtask \(2\) (\(80\%\) số điểm): \(n \le 3 \cdot 10^5\).
Nguồn: 3D'21
Bình luận