Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako uchovávať binárny vyhľadávací strom do súboru

Binárny vyhľadávací strom je dátová štruktúra , kde záznamy dát , tzv " uzly " , majú odkazy na iné uzly , tzv " deti . " To dáva uzly , keď sa v grafe , tvar podobný rodokmeni . Uzly dostávajú svoje miesto v stromovej štruktúre na základe toho , či sa hodnotí ako väčšie alebo menšie ako iné uzly . Ľavé deti sú vždy nižšie ako ich rodičia , pravá deti vždy more.Binary vyhľadávacie stromy sú dôležité v oblasti počítačovej vedy , pretože môžu byť ako triediť a vyhľadávať v priemere , v O (n log n) času . Veci , ktoré budete potrebovať
kompilátor
existujúceho binárneho vyhľadávacieho stromu
Zobraziť ďalšie inštrukcie Cestuj 1

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 .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené