#BST0000009. Xóa nút có một con (Delete a One-Child Node from a BST)
Xóa nút có một con (Delete a One-Child Node from a BST)
Xóa nút có một con (Delete a One-Child Node from a BST)
Nguồn: Phước Hưng OJ
Phiên bản: Phước Hưng OJ Extended
Đề bài
Dựng BST từ dãy theo đúng thứ tự chèn; khóa trùng bị bỏ qua.
Cho khóa được bảo đảm tồn tại và nút mang khóa có đúng một nút con. Khi xóa , nút con duy nhất của thay thế vị trí của trong cây:
- nếu không phải gốc, cha của được nối trực tiếp với nút con duy nhất đó;
- nếu là gốc, nút con duy nhất trở thành gốc mới.
Sau khi xóa, hãy in preorder của cây thu được.
Input
Dòng đầu chứa số nguyên .
Dòng thứ hai chứa số nguyên theo thứ tự chèn.
Dòng thứ ba chứa khóa cần xóa.
Output
In các khóa của cây sau khi xóa theo preorder, cách nhau bởi một dấu cách.
Subtask
Subtask 1 (20 điểm): .
Subtask 2 (30 điểm): .
Subtask 3 (50 điểm): .
Trong tất cả các subtask, và là số nguyên có dấu 64-bit; khóa trùng bị bỏ qua khi dựng cây; tồn tại và nút mang khóa có đúng con.
Ví dụ
Input
4
8 3 10 14
10
Output
8 3 14
Giải thích
Sau khi dựng cây, nút là con phải của và chỉ có một con phải là . Khi xóa , nút được nối trực tiếp vào vị trí con phải của .
Preorder của cây còn lại là 8 3 14.