Gondolom, te sem kódolás C vagy C ++ nyelven.
a. A csomópont, ha a szerkezet megadott, mint ez: struct csomópont {struct csomópont * balra, * jobbra; }; Meg lehet figyelni, hogy a szerkezet akár 0, 1 vagy 2 levelekkel. Tehát a max 2 perc 0 levelek.
b.Minimal magassága nulla, amelyben csak tartalmazza a gyökér. Megjegyezzük, hogy a gyökér nem számít a magassága 1 Ez is nevezik mélység időnként. Itt van egy algoritmust a magasság:
int height(struct node *tree)
{
if (tree == NULL) return 0;
return 1 + max (height (tree->left), height (tree->right));
}
Bővebben: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL
c. Bocsáss meg, ha ezt a worng módon, de felteszem, ha feltérképeztük ezt ki egy darab papírra, mi lenne, hogy kitalálja a szám a „kapcsolatok”, hogy mi lenne kezelhető? Ebben az esetben az lenne egyszerűen a csomópontok száma a fa -1 gyökér csomópontot. Ez az algoritmus megtalálsz http://forums.techarena.in/software-development/1147688.htm segítségével: ellenőrizze, hogy a gyökér null, akkor adja át a bal és a jobb csomópontok paramétereket a funkciót.
int countnodes(Node* root)
{
if (root == null || k<=0)
{
return 0;
} else {
return 1 + count(root.left,k-1) + count(root.right,k-1);
}
}
// remember to subtract one at the end.
int totalnodes = countnodes(root) - 1;
d. Időbonyolultsága legjobb esetben O (nlogn) ahol n a csomópontok száma beszúrni. A legrosszabb esetben, O (n). Ez közvetlenül lineáris.
Ha bármilyen további kérdése csak google, rengeteg dolgot kell tudni bináris keresés fák. De a legtöbb egyszerűen rekurzió hogy meg lehet tanulni 30 másodperc alatt.
Remélem ez segít. Sok szerencsét a vizsgádhoz! Volt az enyém néhány hónappal ezelőtt. ;)