Jeg antar du er enten koding i C eller C ++.
en. En node, hvis struktur blir definert slik: struct {noden struct node * venstre, høyre *; }; Du kan observere at strukturen kan enten ha 0, 1 eller 2 blader. Så, er det maks to, er min 0 blader.
b.Minimal høyde er lik null, i hvilket bare ville inneholde rotnoden. Merk at rotnoden teller ikke som en høyde på 1. Det er også kalt dybde til tider. Her er en algoritme for høyden:
int height(struct node *tree)
{
if (tree == NULL) return 0;
return 1 + max (height (tree->left), height (tree->right));
}
Les mer: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL
c. Unnskyld meg hvis jeg tar dette worng måten, men jeg antar hvis vi kartlagt dette ut på et stykke papir, vil vi være å prøve å finne antall "linker" som vi ville bruke? I dette tilfelle, ville det bare være antall noder i treet -1 for rotnode. Denne algoritmen funnet på denne siden http://forums.techarena.in/software-development/1147688.htm kan hjelpe deg: sjekke om roten er null, så pass på venstre og høyre noder som parametre inn i funksjonen.
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. Tiden kompleksitet for beste fall er O (nlogn) hvor n er antallet noder for å sette inn. Det verste tilfellet er O (n). Det er direkte lineær.
Hvis du har andre spørsmål bare google det, det er nok av ting å vite om binære søketrær. Men det meste av det er rett og slett rekursjon at du kan lære på 30 sekunder.
Jeg håper dette hjelper. Lykke til på eksamen! Jeg hadde mine for noen måneder siden. ;)