2016-03-26 19 views
0

Kırmızı siyah ağacın iç yol uzunluğunu bulmamızı isteyen bir ev ödevi sorunu üzerinde çalışıyorum. Bu, bugüne kadar uyguladığım kod.Kırmızı siyah ağacın iç yol uzunluğu

int Tree::internalpathlength(BinTree* root_node, int curr_level){ 
int ipl; 
if(root_node == NULL){ 
    return 0; 
} 
else if(root_node->colour == BLACK){ 
    ipl = (curr_level+internalpathlength(root_node->left,curr_level+1)+internalpathlength(root_node->right,curr_level+1)); 

} 
return ipl; 
} 

Bence özyineleme temel durumunu kaçırıyorum. Birisi bunu daha iyi anlamama yardımcı olabilir mi? Teşekkürler.

+1

Koşulların hiçbirinin eşleşmemesi durumunda başlatılmamış bir değer olan int ipl; –

+0

@ πάνταῥεῖ. Onu tamir ettim. Hala konuyla ilgileniyor gibi görünmüyorum. SİYAH'a kök düğüm atamakla ilgili bir şey olduğuna inanıyorum. Bunu yapmanın doğru yolu olup olmadığından emin değilim. –

cevap

0

Doğru yanıt, kök düğümün renginin siyah olup olmadığını kontrol etmek zorunda olmadığımızı düşünüyorum. Dahili yol uzunluğu, hem siyah hem de kırmızı düğümler için hesaplanmalıdır. Kırmızı çizgiyi dikkate almazsak, kırmızı bir bağlantı ile bağlanan elemanları iki düğüm olarak düşünüyoruz, bu durum böyle değil.