Binar de căutare copac

voturi
0

Profesorul meu a postat câteva întrebări de revizuire pentru examenul final. Și eu nu pot par să găsească răspunsuri pentru ea. Orice ajutor va fi apreciat foarte mult!

Luați în considerare un arbore binar de n noduri:
a. Care este numărul minim și maxim de noduri frunze?
b. Care este valoarea minimă și maximă a înălțimii?
c. Cât de multe indicii sunt folosite de copac (nu de numărare indicii nule, și presupunând că nu păstrează un câmp care stochează - mamă)?

* D. Care este cel mai rau timp de rulare de îngrijire pentru introducerea n noduri într-un (inițial gol) arbore binar de căutare?

Întrebat 24/05/2011 la 18:27
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
0

Încercați desen diverse copaci pe o hârtie și să vedem ce ai. Amintiți-vă că un arbore binar este definit ca un arbore în care fiecare nod poate avea 0 (în cazul în care aceasta este o frunză), 1 sau 2 copii. Pentru întrebarea dvs. ar trebui să examineze cazul foarte dezechilibrat de 1 copil per nod.

Publicat 24/05/2011 la 18:31
sursa de către utilizator

voturi
0

Considera:

Dacă sunteți încercarea de a maximiza numărul de frunze, pe care doriți cât mai puține noduri interne posibil (și invers, dacă încercați să reducă la minimum numărul de frunze). Cum se poate realiza acest lucru?

Pentru a obține un arbore de înălțime maximă, va pune cât mai puține noduri în fiecare nivel posibil. Cum se poate face asta? În schimb, pentru înălțimea minimă, ceea ce este numărul maxim de noduri puteți pune la fiecare nivel?

Cât de multe moduri sunt acolo pentru a ajunge la fiecare nod dintr-un copac? Astfel, cât de multe indicii ai nevoie?

Publicat 24/05/2011 la 18:33
sursa de către utilizator

voturi
0

Sunt presupunând că ești de codificare, fie în C sau C ++.

A. Un nod, în cazul în care structura este definită astfel: struct nod {nod * struct la stânga, dreapta *; }; Puteți observa că structura poate avea fie 0, 1 sau 2 frunze. Deci, max este 2, min este 0 frunze.

Înălțimea b.Minimal este zero, în care ar conține doar nodul rădăcină. Rețineți că nodul rădăcină nu contează ca o înălțime de 1. Se mai numește adâncime uneori. Aici este un algoritm pentru înălțimea:

    int height(struct node *tree) 
    { 
    if (tree == NULL) return 0;
    return 1 + max (height (tree->left), height (tree->right)); 
    }

Citește mai mult: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL

c. Scuză - mă dacă iau acest drum worng, dar eu sunt presupunând că dacă am trasat acest lucru pe o bucată de hârtie, ne - ar fi încercarea de a găsi numărul de „link - uri“ pe care le - ar folosi? În acest caz, ar fi pur și simplu numărul de noduri din arbore -1 pentru nodul rădăcină. Acest algoritm găsit pe această pagină http://forums.techarena.in/software-development/1147688.htm vă poate ajuta: verifica daca radacina este nul, atunci treci nodurile stânga și dreapta ca parametri în funcție.

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. Complexitatea de timp pentru cel mai bun caz este O (nlogn), unde n este numărul de noduri pentru a insera. Cel mai rău caz, este O (n). Este în mod direct liniar.

Dacă aveți alte întrebări doar Google, exista o multime de lucruri de știut despre copaci binar de căutare. Dar cea mai mare parte este pur și simplu recursivitatea că puteți învăța în 30 de secunde.

Sper ca asta ajuta. Noroc la examen! Am avut a mea acum câteva luni. ;)

Publicat 24/05/2011 la 18:39
sursa de către utilizator

voturi
1

  • Numărul maxim de frunze este ceil (n / 2). Numărul minim este de 1
  • Înălțimea maximă este n. Valoarea minimă este de podea (log_2 (n))
Publicat 24/05/2011 la 18:44
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more