Responsive image Boda Szilárd weblapja

1. Adott egy input.txt file, amely első sorában egy N szám található (N > 50) majd N darab szám. Írjunk egy programot, amely beolvassa a számokat egy tömbbe, majd végigmegy a számokon 1-100 ig, s kiírja egyenként, hogy az illető szám megvan-e a tömben vagy nincs.


input.txt
  • 6
  • 8
  • 9
  • 3
  • 4
  • 5
  • 100



Kimenet
  • 1 - nem
  • 2 - nem
  • 3 - igen
  • ...
  • 100 - igen

A bináris keresőfák olyan speciális keresőfák, amelyeknél minden csúcstól balra csak a csúcsban levő értéknél kisebb elemek, jobbra csak nagyobb elemek találhatóak. Az alábbi programrészlettel tudunk egy új csomópontot beszúrni:

struct node* felepit (struct node* node, int ertek)
{
    // Ha a fa üres, akkor szurja be
    if (node == NULL)
        return letrehoz(ertek);
 
    // kulonben kezdjuk el bejarni, s megnezni, hogy hova is kellene beszurni
    if (ertek < node->ertek)
        node->left = felepit(node->left, ertek);
    else if (ertek > node->ertek)
        node->right = felepit(node->right, ertek);
 
    return node;
}
Ahol a letrehoz ugyanaz a függvény, amelyet a fa bejárásoknál már használtunk.

2. Írjunk egy bináris keresőfa megoldást s hasonlítsuk össze, hogy melyik hatékonyabb a 2 megoldás közül.