2016-03-21 13 views
1

node.left = insert(node.left, data)'u neden yeniden atamam gerektiğini bilmiyorum, çünkü node = new BNode(data)'u kullanarak atadım.Java'da art arda BST uygulaması

private BNode insert(BNode node, int data) { 
    if (node == null) { 
     node = new BNode(data); 
    } 
    else if (node.data < data) { 
     node.left = insert(node.left, data); 
    } 
    else if (node.data > data) { 
     node.right = insert(node.right, data); 
    } 
    return node; 
} 
+0

Kodumu yapıştırma biçimini bilmiyorum. Bu yüzden buraya yapıştırırım. – Jutta

+0

özel BNode uç (BNode düğümü, int veri) \t { \t \t (düğüm == null) \t \t { \t \t \t düğüm = Yeni BNode (veri) durumunda; \t \t} başka \t \t halinde (node.data veriler) halinde \t \t { \t \t \t node.right = (node.right, veri) eklemek; \t} \t \t İade düğümü; \t \t} – Jutta

+0

Gerçekten üzgünüm, ancak biçimi ayarlamak için bana bir saat maliyeti var. – Jutta

cevap

1

İkili Arama Ağacı'nda yeni öğeleri yaprak olarak yerleştirmeniz gerekir. Kodunuz şu anda bir düğüme bakıp bakmadığımızı kontrol ederek başlıyor ve eğer öyleyse, verilerimizi buraya ekleyin. Aksi halde bir kanada ulaşana kadar bir daldan aşağıya devam etmemiz gerekir. Bu nedenle bu işlevi sol veya sağ dalda (düğümdeki sayı ve verilere bağlı olarak) adlandırıyoruz. Bunu yapmamızın yolu, node.left veya node.right'daki işlevi çağırmaktır. Çocuğun bir boş değeri varsa, şimdi çocuğumuzun yeni soktuğumuz bu yeni düğüm olduğunu söylemek isteriz. Çocuk bir yaprak değilse, o zaman orijinal çocuğu iade ederek bu ödev hiçbir şey yapmayacaktır. Sadece ve diğer tüm sol ve sağ çocuklar yolu onlar kalır, bu nedenle

node = new BNode(data); 

ve bu sol veya sağ alt akım yeni bir sayfa olarak değiştirildi alır tek olacak denilen önceki zaman söyleyerek bir şey yapar idi.

+0

Anladım. node = new BNode (data) yeni bir BNode yaratır, bu ağaç hakkında hiçbir şey değildir. Bu yüzden bu yeni düğümü ağaca bağlamak zorundayım. – Jutta

+0

Eğer bu soruya uygun bir şekilde cevap verirse, cevabı kabul edebilir misiniz? –

İlgili konular