C kullanarak İkili arama ağacı InPlace için İkili ağaç dönüştürmek

oy
0

herhangi bir ekstra boşluk İkili Arama tree.I için İkili Ağacı dönüştürmek kullanmadan aşağıdaki algo ile geldi ama bu çalışmıyor.

BTtoBST (düğüm * kökü)

root 1.If BOŞ dönüş olduğunu

2.else akım = kök

3.if (akım-> sol> akım) takas (akım-> kaldı, akım)

4.if (akım-> sağ <güncel) takas (akım-> sağ, akım)

5.current = akım> kaldı

6 akım ise 3'e gidin! = NULL başka 4'e gidin

7.current = akım> sağ

Şimdiden teşekkürler

Not: Ben bu bağlantıyı gördüm ama çok yardımcı olmadı !! İkili Ağacı dönüştürme -> BST (orijinal ağaç şeklini koruyarak)

Oluştur 29/03/2011 saat 05:49
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
1

Bir AVL Ağacında gibi alt ağaçlar dahil düğümleri (sadece düğüm içeriği) takas olabilir http://en.wikipedia.org/wiki/AVL_tree

Tıpkı uzun BST kısıtlamaları her takası sonrasında kökünden derin birinci aramayı yeniden başlatmadan, ihlal edilen takas tutmak.

Cevap 29/03/2011 saat 08:42
kaynak kullanıcı

oy
0

bir post-düzen (aşağıdan yukarıya) ağacının geçişi, ziyaret edilen düğümleri alıp bir BST içine ekleyerek gerçekleştirin.

"Herhangi bir ekstra boşluk bırakmadan" özyinelemeye engel mu?

Değilse, gibi o zaman bir şey:

# top level call passes null for bst
bt_to_bst (root, bst)
  # nothing to add to bst; just return it
  if null(root) -> return bst
  # if this is a leaf node, stick it into the BST
  if null(root->left) && null(root->right)
    return bst_insert(bst, root)
  # otherwise add all of left subtree into the bst and then the right tree
  bst = bt_to_bst (root->left, bst);
  return bt_to_bst (root->right, bst);

bt_to_bstbir filtreleme işlemi olup; Varolan BST alır ve buna ilave belirli düğüm ile yeni bir döner.

Bir yaprak düğüm ekleme bstonu tekrar ziyaret asla, bu yüzden biz onun üzerine yazabilirsiniz çünkü güvenlidir leftve rightişaretçileri.

Cevap 28/03/2012 saat 18:49
kaynak kullanıcı

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