İkili Arama Ağaçları

oy
5

Bu BST ilgili wikipedia üzerinde bulunan bazı kodudur:

# 'node' refers to the parent-node in this case
 def search_binary_tree(node, key):
     if node is None:
         return None  # key not found
     if key < node.key:
         return search_binary_tree(node.leftChild, key)
     elif key > node.key:
         return search_binary_tree(node.rightChild, key)
     else:  # key is equal to node key
         return node.value  # found key

Şimdi burada İkili Ağacı var:

       10
    5        12
  3   8    9   14
     4 11  

Ben 11 arıyorum, ben orada algoritması izlerseniz, ben 10 ile başlar, ben 12 doğru gitmek ve sonra 9'a sola Ve 11. bulmadan ağacın sonuna ulaşmak Ancak 11 ağacımın var , sadece diğer tarafında.

Benim ağaç üzerinde çalışmak için bu algoritma için ikili Ağacında kısıtlamalar nelerdir açıklayabilir misiniz?

Teşekkürler.

Oluştur 07/09/2010 saat 06:31
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
3

İkili Ağacı ve İkili Arama Ağacı arasındaki karıştırmayın. (BST olarak adlandırılan kısa) ikili arama ağacı soldaki tüm düğümler üst düğüme göre daha az ya da eşittir ve tüm düğümlerin sağ üst düğümün daha büyük olan ikili ağacın özel bir türüdür.

Verdiğiniz örnek Oysa sadece İkili Ağacı değil, bir İkili arama ağacı olduğunu. Sen değeri 11 ve 14 BST özelliğini ihlal üst düğümün 10 bırakılır olduğunu görebilirsiniz. Bir göz atın burada İkili arama ağaçları için.

Cevap 07/09/2010 saat 06:34
kaynak kullanıcı

oy
1

Yanlış yerde düğümleri 14 ve 11 yerleştirdik. Gönderen BSTS Vikipedi'ye :

  • Bir düğümün sol alt ağaç düğümün anahtarının daha az tuşlarıyla sadece düğümleri içerir.
  • Bir düğümün sağ alt ağaç düğümün anahtarından büyükse tuşlarıyla sadece düğümleri içerir.
  • Hem sol ve sağ alt ağaç da ikili arama ağaçları olmalıdır.

Gördüğünüz gibi, hem 14 ve 11 8'den büyüktür.

Cevap 07/09/2010 saat 06:35
kaynak kullanıcı

oy
3

sen bir BST sunulan ağacı. 11 ve 14 ile 10 soluna eklenir ve algoritma orada aramaz yüzden hiç olurdu. 9 yerin diğer takım oldu.

Wikipedia göre Ekleme:

Ekleme başlayacaktı bir arama olarak başlar; Kök değerine eşit değilse, biz daha önce olduğu gibi sol veya sağ alt ağaçlar arayın. Sonunda, bir dış düğüm ulaşacak ve düğümün değerine bağlı olarak sağ veya sol çocuk olarak değer katar. Diğer bir deyişle, biz kök incelemek ve yeni değer kökü, ya da yeni bir değer köküne eşit veya daha büyük ise sağ alt ağaç küçükse yinelemeli sol alt ağaç için yeni bir düğüm yerleştirin.

o (aynı zamanda Wikipedia'dan) bu özellikleri varsa Bir İkili Ağacı bir BST olduğunu söyleyebilir:

  1. Bir düğümün sol alt ağaç düğümün anahtarının daha az tuşlarıyla sadece düğümleri içerir.
  2. Bir düğümün sağ alt ağaç düğümün anahtarından büyükse tuşlarıyla sadece düğümleri içerir.
  3. Hem sol ve sağ alt ağaç da ikili arama ağaçları olmalıdır.
Cevap 07/09/2010 saat 06:35
kaynak kullanıcı

oy
10

ağacınızı bir ikili arama ağacı olmadığı için sadece: bu doğru istenmemektedir. BST aslında algoritma açıklandığı gibi inşa edilmiş. ağacınızdaki Örneğin: 9 <10 olarak bunu kök düğümü '10' sol dalı altında olmalıdır, çünkü düğüm '9' Sağ pozisyonda değil. Sağ dal üzerinde olmalıdır '14' ve '11' için aynı.

Örneğin bir BST böyle sth olabilir:

    10
  5    11
3   8    12
          14
Cevap 07/09/2010 saat 06:37
kaynak kullanıcı

oy
1

ağacınızı bir ikili arama ağacı değil

Cevap 07/09/2010 saat 06:58
kaynak kullanıcı

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