Zor değil.
İki kat bağlantılı listelerde, taktığınızda, bellek tahsis edeceksiniz ve daha sonra baş veya önceki düğümle ve kuyruk veya sonraki düğümle bağlanacaksınız. Sildiğinizde, tamamen aynı olanlardan sonra bağlantıyı açacak ve ardından belleği boşaltıyor olacaksınız. Bütün bu işlemler simetriktir.
Bu, her iki durumda da eklemek / silmek için düğüme sahip olduğunuzu varsayar. (Ve ekleme durumunda, daha önce ekleyeceğiniz düğüme sahip olduğunuzdan, bir şekilde eklemenin biraz daha karmaşık olduğu düşünülebilir.) Silme düğümü değil, yükü silme girişiminde bulunmaya çalışıyorsanız Düğümden sonra, elbette önce yükü listelemek için listeyi aramanız gerekecek, fakat bu silinme sıkıntısı değil, değil mi?
Dengeli ağaçlarda, aynısı geçerlidir: Bir ağaç genellikle yerleştirmeden hemen sonra ve ayrıca silme işleminden hemen sonra dengelenmeye ihtiyaç duyar. Yalnızca bir dengeleme yordamını denemek ve sahip olmak ve bir ekleme mi yoksa silme mi olursa olsun, her işlemden sonra uygulamak iyi bir fikirdir. Ağacı her zaman dengeli bırakan bir ekleme ve aynı zamanda ağacı her zaman dengeli bırakan bir silme işlemi yapmaya çalışıyorsanız, ikisi aynı dengeleyici rutini paylaşmadan, hayatınızı gereksiz yere karmaşıklaştırıyorsunuz.
Kısacası, birinin diğerinden daha zor olmasının bir nedeni yoktur ve bunun olduğunu buluyorsanız, o zaman düşünmeyi daha doğal bulma eğiliminin (çok insani) eğiliminin mağduru olmanız mümkündür. Yapıcı olarak, çıkartıcı olarak, silme işlemini olması gerekenden daha karmaşık bir şekilde uyguladığınız anlamına gelir. Ama bu bir insan meselesi. Matematiksel bir bakış açısıyla, hiçbir sorun yoktur.
pop
,extract-min
?