Professional Documents
Culture Documents
CTDL&GT
CTDL&GT
Cho danh sách ñịnh nghĩa bở cấu trúc trên, phần từ ñầu tiên ñược trỏ bởi list. Các phần tử
ñược ñánh số thứ tự từ 1 bắt ñầu từ list. Hãy viết hàm Node * Shuffle(Node * list)
nhận tham số ñầu vào là con trỏ list ñầu danh sách, tiến hành chuyển vị trí các nút có thứ tự
chẵn lên trước các nút có số thứ tự lẻ (giữ nguyên vị trí tương ñối của nút). Hảm này trả về con
trỏ ñầu danh sách list.
Câu 2: Cho cây nhị phân ñịnh nghĩa bởi cấu trúc
ðường kính của một cây ñược ñịnh nghĩa là khoảng cách lớn nhất giữa 2 lá bất kỳ của cây ñó.
Khoảng cách ñược tính bằng số nút trên ñường ñi giữa 2 lá. ðường ñi này có thể qua gốc hoặc
không qua gốc (xem ví dụ).
2a. Viết hàm int (Tree * root) nhận tham số ñầu vào là con trỏ gốc của cây, và trả về
ñường kính của cây.
2b. Gọi T(n) là thời gian tính toán của thuật toán ở câu 2a (n là số nút của cây). Hãy ñánh giá
T(n).
Câu 3: Cho max-heap ñược biểu diễn bởi mảng {50, 40, 35, 31, 32, 24, 18, 30, 20, 8}
Câu 4: Cho ñồ thị ñược biểu diễn bằng ma trận ñánh số từ 1 ñến 7
0 1 0 0 0 1 1
1 0 1 0 0 0 0
1 0 0 1 0 0 0
0 0 0 0 1 1 1
0 0 0 0 0 1 0
0 0 0 0 0 0 0
0 0 1 0 0 1 0
5a. Hãy xây dựng thuật toán tìm các cặp x ∈ X và y ∈ Y sao cho x + y = k
5b. Xác ñịnh ñộ phức tạp của thuật toán trên
Lưu ý: ðiểm của bài 5 sẽ ñược tính vào tính ưu việt của thuật toán. Thuật toán trực tiếp sẽ ñược
rất ít ñiểm.