Nedávno som sa snažil binárne manipulovaťprehľadajte strom a uviazli tu. Chcem mať vo vnútri pole (rad ukazovateľov), v ktorom chcem ukladať ukazovatele každého uzla binárneho vyhľadávacieho stromu v poradí. POTREBUJEME HODNOTU KAŽDÉHO NODE Potrebujem ukazovatele, aby som mohol mať prístup k ich hodnote, ľavému podstromu a pravému podstromu.
struct node{
int key;
struct node *left, *right;
};
node **arr;
int x=0;
void inorder(struct node *root){
if (root != NULL){
inorder(root->left);
//cout<<"X : "<<x<<endl;
arr[x] = root;
x++;
printf("%d n", root->key);
inorder(root->right);
}
}
Prosím pomôžte. Vďaka.
odpovede:
0 pre odpoveď č. 1Môžete to urobiť, ale ak je to triedené pole uzlovukazovatele vyhovujú vašim potrebám, potom nepotrebujete binárny vyhľadávací strom: môžete vykonávať binárne vyhľadávanie v poli. Táto dátová štruktúra má rovnakú rýchlosť prístupu ako strom (môže byť dokonca o niečo rýchlejšia, pretože údaje sú pevne zabalené v pamäti) a je veľmi efektívny z hľadiska pamäte. Vkladanie nových údajov je však nákladné: o (n). Toto riešenie nie je vhodné, ak sa očakáva veľa vkladaní. V tomto prípade však zachovaním tohto zoradeného poľa stratíte všetky výhody stromovej štruktúry.