#BST0000008. Xóa nút lá (Delete a Leaf from a BST)
Xóa nút lá (Delete a Leaf from a BST)
Xóa nút lá (Delete a Leaf 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 là một nút lá, nghĩa là nút đó không có con trái và cũng không có con phải.
Hãy xóa nút mang khóa khỏi cây, sau đó in preorder của cây còn lại. Preorder thăm gốc trước, tiếp theo là cây con trái, rồi cây con phải.
Nếu là nút duy nhất của cây thì sau khi xóa, cây trở thành rỗng.
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
Nếu cây sau khi xóa còn nút, in dãy khóa theo preorder trên một dòng, các khóa cách nhau bởi một dấu cách.
Nếu cây trở thành rỗng, in EMPTY.
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
7
8 3 10 1 6 14 4
4
Output
8 3 1 6 10 14
Giải thích
Trong BST được tạo ra, nút là con trái của nút và không có con nào, nên là một nút lá. Sau khi xóa nút , các liên kết còn lại của cây không đổi.
Duyệt preorder cây mới cho dãy 8 3 1 6 10 14.