Nó không khó hơn.
Với các danh sách được liên kết đôi, khi bạn chèn, bạn sẽ phân bổ bộ nhớ và sau đó bạn sẽ liên kết với đầu hoặc nút trước đó và với đuôi hoặc nút tiếp theo. Khi bạn xóa, bạn sẽ hủy liên kết từ chính xác, và sau đó giải phóng bộ nhớ. Tất cả các hoạt động này là đối xứng.
Điều này giả định rằng trong cả hai trường hợp, bạn có nút để chèn / xóa. (Và trong trường hợp chèn, bạn cũng có nút để chèn trước đó, do đó, theo cách nào đó, việc chèn có thể được coi là phức tạp hơn một chút.) Nếu bạn đang cố gắng xóa không phải là nút để xóa, nhưng tải trọng của nút, tất nhiên trước tiên bạn sẽ phải tìm kiếm danh sách tải trọng, nhưng đó không phải là một sự thiếu sót, phải không?
Với các cây cân bằng, áp dụng tương tự: một cây thường cần cân bằng ngay sau khi chèn và cũng ngay sau khi xóa. Đó là một ý tưởng tốt để thử và chỉ có một thói quen cân bằng, và áp dụng nó sau mỗi thao tác, bất kể đó là chèn hay xóa. Nếu bạn đang cố gắng thực hiện thao tác chèn luôn làm cho cây cân bằng, và cũng là xóa luôn làm cho cây cân bằng, mà không có hai điều kiện chia sẻ cùng một thói quen cân bằng, bạn sẽ làm phức tạp cuộc sống của mình.
Nói tóm lại, không có lý do tại sao một người nên khó hơn người kia, và nếu bạn đang tìm thấy điều đó, thì thực tế có thể bạn là nạn nhân của xu hướng (rất con người) khi thấy nó tự nhiên hơn khi nghĩ xây dựng hơn trừ, có nghĩa là bạn có thể thực hiện xóa theo cách phức tạp hơn mức cần thiết. Nhưng đó là vấn đề của con người. Từ quan điểm toán học, không có vấn đề.
pop
,extract-min
?