Eu personal cred că cel mai bun mod de a face acest lucru ar fi pentru a merge pentru un arbore binar de căutare randomizat ca un treap . Acest lucru nu garantează în mod absolut că pomul va fi echilibrat, dar cu mare probabilitate copac va avea un factor de echilibru bun. Un treap funcționează prin augmentarea fiecare element al arborelui cu un număr uniform aleator, apoi asigurându -se că arborele este un arbore binar de căutare cu privire la cheile și o grămadă în ceea ce privește valorile aleatoare uniforme. Inserarea într - un treap este extrem de simplu:
- Alegeți un număr aleator pentru a atribui elementul nou adăugat.
- Se introduce elementul în BST folosind standardul de inserare BST.
- În timp ce tasta elementul nou introdus este mai mare decât cheia părintelui său, efectuează o rotație copac pentru a aduce noul element de mai sus mamă.
Acest ultim pas este singurul foarte greu, dar dacă ai avut ceva timp să-l lucreze pe o tablă Sunt destul de sigur că ai putea pune în aplicare acest lucru pe-the-fly într-un interviu.
O altă opțiune care ar putea lucra ar fi de a utiliza un arbore splay . Este un alt tip de BST rapid , care poate fi pus în aplicare presupunând că aveți o funcție standard , inserați BST și capacitatea de a face rotații de copac. Foarte important, arborii splay sunt extrem de rapid în practică, și este cunoscut faptul că acestea sunt (a într - un factor constant) , cel puțin la fel de bun ca orice alt arbore binar de căutare statică.
În funcție de ceea ce se înțelege prin „arborele de căutare,“ ați putea lua în considerare , de asemenea , stocarea numerelor întregi , în unele structuri optimizate pentru căutare de numere întregi. De exemplu, ați putea utiliza un trie bitwise pentru a stoca numere întregi, care sprijină de căutare în timp proporțional cu numărul de biți într - un cuvânt mașină. Acest lucru poate fi pus în aplicare destul de bine , folosind o funcție recursivă să se uite peste biți, și nu necesită nici un fel de rotații. Dacă este necesar să suflu dintr - o punere în aplicare în cincisprezece minute, iar în cazul în care intervievatorul vă permite să se abată de la arborii standard de căutare binare, atunci acest lucru ar putea fi o soluție.
Sper că acest lucru vă ajută!