Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Vytvorte predajňu funkciu , ktorá prijíma koreňový uzol . Kedykoľvek budete zaoberať sa stromy v informatike , bude najefektívnejší algoritmus takmer vždy rekurzívne a ukladanie stromu do súboru nebude výnimkou . Tu je ukážka kostra obchode funkcia rekurzívne ( v Jave ) . Verejné úložisko void ( Node n) throws IOException { ... }
2
Zápis dát na koreňový uzol do súboru . To bude používať " pre- order priechod " ( Root , ľavý dieťa , Right dieťa ) prejsť všetky uzly v strome , pretože táto metóda priechod bude robiť to najjednoduchšie rekonštruovať strom z poradia uzlov v súbore . Rekurzívne funkcie teraz vyzerá takto : public void obchod ( Node n) throws IOException { write ( megashares , n) ; } Obchod sa mala volať s Left dieťaťa : public void obchod ( Node n) throws IOException { write ( megashares , n ) , obchod ( n.left ) ; } Store by sa mala volať s právom dieťaťa : public void obchod ( Node n) throws IOException { write ( megashares , n) , obchod ( n.left ) , obchod ( n.right ) ; }
3
Double - skontrolujte, či je funkcia odovzdáva rekurzívne zoznamu . Aby sa zabránilo chybám pretečeniu zásobníka , vždy skontrolujte , či je rekurzívny funkcia spĺňa nasledujúce podmienky : Má funkcie majú stav výstupu ? Áno , ak strom nie je nekonečné hĺbky , nakoniec to bude dosiahnuť uzol , ktorý nemá ani ľavej alebo pravej dieťa a bude exit.Does každej iterácie funkcie presunúť bližšie k stavu výstupu ? Áno , za predpokladu , že strom nie je kruhový , a žiadny uzol má jeden zo svojich vlastných predkov ako funkcia child.The prechádza zoznamu .
4
Rekonštrukcia zo súboru . Keď príde čas na načítanie stromu späť zo súboru , budete jednoducho vložiť každý uzol do stromu , pretože je načítaný zo súboru pomocou štandardného vloženie algoritmus . To by malo začať pri koreni a prácu si cestu dole pomocou pre- order priechod , umiestnenie nového uzla v prvom prázdnom priestore , do ktorého sa vojde . To by malo rekonštruovať strom presne tak , ako to bolo pôvodne zložený v O (n log n) v priemere .