2016-04-10 3 views
0

BSTS ilgili bir başka soruBelirli bir alana dayalı bir BST'deki belirli düğüm nasıl bulunur ve bu düğümlerin tüm özniteliklerini yazdırır?

struct listing 
{ 
    int id; 
    char agent[12]; 
    int price; 
    int size; //In square feet 
    int numBeds; 
    double numBaths; 
    int yearBuilt; 
    char address[ADD_LENGTH]; 
    struct listing *left; 
    struct listing *right; 
}; 

void findListingByPrice(struct listing *node, int maxPrice) 
{ 
    if(node == NULL) 
    { 
     printf("This node does not exist in the database."); 
     return; 
    } 
    else if(node->price < maxPrice) 
    { 
     //I'm stuck here. 
    } 
} 

Tamam, sorum (umarım mantıklı) bu yüzden, nasıl maxPrice daha azdır ve dışarı baskı SADECE bu düğümlerin alanlar fiyat alanıyla düğümleri bulabilirsiniz ? MaxPrice'den daha düşük bir fiyata sahip 3 düğüm varsa, sadece bu 3 düğümün alanlarını yazdırabilirim. Bunu nasıl yaparım? Teşekkür ederim!

+1

Ağaç hangi değere dayanıyor? –

cevap

0

Yalnızca ağacı, fiyat olarak anahtar olarak oluşturduğunuz varsayılarak, sıralı bir şekilde fiyatı verecek olan bir geçiş türünde geçiş yapmanız gerekir.

void findListingByPrice(struct node *node, int maxPrice) 
{ 
    if(node == NULL) 
    { 
     return; 
    }else { 
     findListingByPrice(node->left, maxPrice); 
     if(node->price <=maxPrice) { 
      printf("Found 1\n"); 
      print(node); 
     } 
     findListingByPrice(node->right, maxPrice); 
    } 


} 

Ziyaret komple kodu için this bağlantısı.

Bu yardımcı olur umarım.

+0

Ağaç farklı bir alan tarafından oluşturulduysa ne yapmalıyım? –

+0

Daha sonra yukarıdaki şey de işe yarayacak çünkü tam bir ağaca geçiş yapıyorsunuz. Fiyatın anahtar olarak kullanılması durumunda, fiyattan daha yüksek bir fiyatla bir düğüm bulduğunuzda geçiş işlemini durdurabilirsiniz. –