void BSTDispose (tBSTNodePtr *RootPtr) { /* ---------- ** Zru¹í celý binární vyhledávací strom a korektnì uvolní pamì». ** ** Po zru¹ení se bude BVS nacházet ve stejném stavu, jako se nacházel po ** inicializaci. Tuto funkci implementujte rekurzivnì bez deklarování pomocné ** funkce. **/ if(*RootPtr!=NULL){ BSTDispose(&((*RootPtr)->LPtr)); BSTDispose(&((*RootPtr)->RPtr)); free(*RootPtr); *RootPtr=NULL; } }
void BSTDispose (tBSTNodePtr *RootPtr) { if ( *RootPtr != NULL ) { /* Ruseni leveho podstromu */ BSTDispose ( &( *RootPtr ) -> LPtr ) ; /* Ruseni praveho podstromu */ BSTDispose ( &( *RootPtr ) -> RPtr ) ; /* Uvolneni ukazatele */ free ( *RootPtr ) ; /* Nastaveni ukazatele na NULL - stav po inicializaci */ ( *RootPtr ) = NULL ; } }
void BSTDispose (tBSTNodePtr *RootPtr) { /* Korektnì zru¹í celý binární vyhledávací strom. Zvolte nejvýhodnìj¹í ** druh rekurzívního prùchodu stromem. Nedeklarujte ¾ádné pomocné procedury ** nebo funkce. ** POZOR: Vzhledem k jisté slo¾itosti rekurzívního volání této fce zde uvádím ** pøíklad jak funkci zavolat (kdy¾ jsme pøijali RootPtr jako ukazatel na ** ukazatel). Správné zavolání napø. na levý podstrom: ** BSTDispose(&(*RootPtr)->LPtr). */ if((*RootPtr)){ BSTDispose(&(*RootPtr)->LPtr); BSTDispose(&(*RootPtr)->RPtr); free(*RootPtr); *RootPtr = NULL; } }
void BSTDispose (tBSTNodePtr *RootPtr) { /* ---------- ** Zru¹í celý binární vyhledávací strom a korektnì uvolní pamì». ** ** Po zru¹ení se bude BVS nacházet ve stejném stavu, jako se nacházel po ** inicializaci. Tuto funkci implementujte rekurzivnì bez deklarování pomocné ** funkce. **/ if (*RootPtr != NULL) { // posunuti se do prave vetve BSTDispose(&(*RootPtr)->RPtr); // posunuti se do leve vetve BSTDispose(&(*RootPtr)->LPtr); // zruseni prvku // uvolneni pameti free(*RootPtr); *RootPtr = NULL; return; } }
int test_BSTDispose(tBSTNodePtr* TempTree) { solved=TRUE; BSTDispose(TempTree); if (!solved) { printf("Operace BSTDispose() nebyla implementovana \n"); return(FALSE); } else { Print_tree(*TempTree); return(TRUE); } }