Bir İkili Arama Tree DrRacket Silme Kök

oy
1

BU ÖDEV OLDUĞUNU LÜTFEN DİKKAT! -> Ben direkt kod örneklerini arayan değil, benim muhakeme bazı yumuşak masaj değilim ...

Ben üç şey yaparak ikili arama ağacının kökünü çıkaran bir fonksiyon yazmak için istendi: i) sağa ii için ağaç dönen) orijinal BST kök oldu sağ alt ağacının kökü (kaldırma) iii) yeniden inşa (orijinal ağacının sol idi) yeni kökü ve o düğümün çocuklarının uygun yeniden düzenlemeleri içeren bST ... İşte ne var:

    (define (rm-root my-bst)
      (list (key (rot-r my-bst)) 
            (left (rot-r my-bst)) 
            (append (right (right (rot-r my-bst))) 
                    (left (right (rot-r my-bst))))))

tüm büyük Hangisi o kök düğüme terfi yapıldığı düğümün çocukları ile ağacı yeniden etmediğini için bekliyoruz. Herkes bana bunu uygulama hakkında gitmeli nasıl düşünmek yardımcı olabilir misiniz? Bence listeleri gibi ve fonksiyon çürüklüğü-r sağa BST döndüğünü Bsö 's tanımladıktan bahsetmeliyiz. Teşekkür ederim.

Oluştur 12/11/2011 saat 01:07
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Eh, soru gider burada istedi, ama sonra bu 12 gün faydalı olacaktır emin değilim.

Açık olmak gerekirse, ben veri yapısı (liste anahtarı sağa sola), sol ve sağ ağaçları da (boş veya, ama bu alakası yok) nerede formun olduğunu tahmin ediyorum. Bu durum söz konusu değilse, o açıklığa kavuşturulması gerekli olacaktır.

Kodunuzdaki sorunlardan biri doğrudan, hakkı için birlikte sahip iki listeyi eklemek istemiyorum olmasıdır. Sen onlardan birinin tuşu ve ardından sol ve sağ içeren bir liste yapmak istiyorum. Bunu doğru okuyorum ise sol fonksiyon bir ağaç dönmelidir ve bu nedenle iyi çalışması gerekir.

Bu işlerin yolunda gitmemesi için ana olasılık gibi görünüyor gibi ben senin yerinde olsam çürüklüğü-r uygulanmasını kontrol etmek istiyorsunuz.

Cevap 23/11/2011 saat 07:33
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more