Підтримка
www.wikidata.uk-ua.nina.az
Dvijkove abo Binarne derevo poshuku angl binary search tree BST v informatici dvijkove derevo v yakomu kozhnij vershini x zistavlene pevne znachennya val x Pri comu taki znachennya povinni zadovolnyati umovi vporyadkovanosti nehaj x dovilna vershina dvijkovogo dereva poshuku Yaksho vershina y znahoditsya v livomu pidderevi vershini x to val y val x Yaksho u znahoditsya u pravomu pidderevi x to val y val x Dvijkove derevo poshukuTip DerevoVinajdeno 1960Obchislyuvalna skladnist u zapisi velikogo OSerednya NajgirshaProstir O n O n Poshuk O log n O n Vstavlyannya O log n O n Vidalennya O log n O n Binarne derevo Take strukturuvannya dozvolyaye nadrukuvati usi znachennya u zrostayuchomu poryadku za dopomogoyu prostogo algoritmu centrovanogo obhodu dereva Predstavlyayetsya take derevo vuzlami nastupnogo viglyadu Node element key left right parent Dostup do dereva T zdijsnyuyetsya za dopomogoyu posilannya root Binarni dereva poshuku nabagato efektivnishi v operaciyah poshuku anizh linijni strukturi v yakih vitrati chasu na poshuk proporcijni O n de n rozmir masivu danih todi yak v povnomu binarnomu derevi cej chas proporcijnij v serednomu O log2n abo O h de h visota dereva hocha garantuvati sho h ne perevishuye log2n mozhna lishe dlya zbalansovanih derev yaki ye efektivnishimi v algoritmah poshuku anizh prosti binarni dereva poshuku dzherelo Operaciyi z dvijkovim derevom poshukuNajposhirenishoyu operaciyeyu yaka vikonuyetsya z binarnim derevom poshuku ye poshuk v nomu pevnogo klyucha Krim togo binarni dereva poshuku pidtrimuyut taki zapiti yak poshuk minimalnogo i maksimalnogo elementa a takozh poperednogo i nastupnogo Poshuk Dlya poshuku vuzla iz zadanim klyuchem v binarnomu derevi poshuku vikoristovuyetsya nastupna procedura Tree Search yaka otrimuye yak parametri pokazhchik na korin binarnogo dereva i klyuch k a povertaye pokazhchik na vuzol z cim klyuchem yaksho takij isnuye v inshomu vipadku povertayetsya znachennya NIL Tree Search x k 1 if h nil abo k key x 2 then return h 3 if k lt key x 4 then return Tree Search left x k 5 else return Tree Search right x k Procedura poshuku pochinayetsya z korenya dereva i prohodit vniz po derevu Dlya kozhnogo vuzla h na shlyahu vniz jogo klyuch key x porivnyuyetsya z peredanim yak parametr klyuchem k Yaksho klyuchi odnakovi poshuk zavershuyetsya Yaksho k menshe key h poshuk trivaye v livomu pidderevi h yaksho bilshe to poshuk perehodit v prave pidderevo Tu zh proceduru mozhna zapisati iterativno rozgortayuchi rekursiyu v cikl while Iterativna versiya proceduri Poshuk Iterative Tree Search x k 1 while x NIL i k key h 2 do if k key h 3 then h left x 4 else h right x 5 return xPoshuk minimalnogo maksimalnogo elementa Algoritm poshuku minimalnogo elementa Element z minimalnim znachennyam klyucha legko znajti sliduyuchi za vkazivnikami left vid korenevogo vuzla do tih pir poki ne zustrinetsya znachennya NIL Procedura TREE MINIMUM x povertaye pokazhchik na znajdenij element piddereva z korenem x TREE MINIMUM X 1 while left x NIL 2 do x left x 3 return x Algoritm poshuku maksimalnogo elementa simetrichnij TREE MAXIMUM X 1 while right x NIL 2 do x right x 3 return x Obidva algoritmi vimagayut chasu O h de h visota dereva Nastupnij i poperednij elementi Yaksho x pokazhchik na deyakij vuzol dereva to procedura TREE SUCCESSOR X povertaye pokazhchik na vuzol z nastupnim za x elementom abo nil yaksho zaznachenij element ostannij v derevi TREE SUCCESSOR X 1 if right x NIL 2 then return TREE MINIMUM right x 3 u p x 4 while y NIL ta x right y 5 do x u 6 u p y 7 return u Navedena procedura okremo rozglyadaye dva vipadki Yaksho prave pidderevo vershini ne puste to nastupnij za x element ye krajnim livim vuzlom u pravomu pidderevi yakij viyavlyayetsya proceduroyu TREE MlNlMUM right x Z inshogo boku yaksho prave pidderevo vuzla x puste ta u x isnuye nastupnij za nim element y to y ye najmenshim predkom x chij livij vuzol takozh ye predkom x Dlya togo shob znajti y mi prosto pidnimayemosya vgoru po derevu do tih pir poki ne zustrinemo vuzol yakij ye livim dochirnim vuzlom svogo batka Cya diya vikonuyetsya v ryadkah 3 7 algoritmu Chas roboti algoritmu TREE SUCCESSOR v derevi zavvishki h skladaye O h oskilki mi abo ruhayemosya po shlyahu vniz vid vihidnogo vuzla abo po shlyahu nagoru Procedura poshuku podalshogo vuzla v derevi TREE PREDECESSOR simetrichna proceduri TREE SUCCESSOR i takozh maye chas roboti O h Yaksho v derevi ye vuzli z odnakovimi klyuchami mi mozhemo prosto viznachiti nastupnij i poperednij vuzli yak ti sho povertayutsya procedurami TREE SUCCESSOR ta TREE PREDECESSOR vidpovidno Dodavannya elementa Dlya vstavki novogo znachennya v v binarne derevo poshuku T mi skoristayemosya proceduroyu TREE INSERT Procedura otrimuye yak parametr vuzol z u yakogo key z v left z NIL i right z NIL pislya chogo vona takim chinom zminyuye T i deyaki polya z sho z viyavlyayetsya vstavlenim v vidpovidnu poziciyu v derevi TREE INSERT T Z 1 u NIL 2 h root T 3 while x NIL 4 do u x 5 if key z lt key x 6 then x left x 7 else x right x 8 p z u 9 if u NIL 10 then root T z Derevo T puste 11 else if key z lt key y 12 then left y z 13 else right u zVidalennya elementa Procedura vidalennya danogo vuzla z z binarnogo dereva poshuku otrimuye yak argument pokazhchik na z Procedura rozglyadaye tri mozhlivi situaciyi Yaksho u vuzla z nemaye dochirnih vuzliv to mi prosto zminyuyemo jogo batkivskij vuzol r z zaminyuyuchi v nomu pokazhchik na z znachennyam NIL Yaksho u vuzla z lishe odin dochirnij vuzol to mi vidalyayemo vuzol z stvoryuyuchi novij zv yazok mizh batkivskim i dochirnim vuzlom vuzla z Yaksho u vuzla z dva dochirnih vuzla to mi znahodimo nastupnij za nim vuzol u u yakogo nemaye livogo dochirnogo vuzla pribirayemo jogo z poziciyi de vin perebuvav ranishe shlyahom stvorennya novogo zv yazku mizh jogo batkom i nashadkom i zaminyuyemo nim vuzol Z DELETE T z 1 if left z NULL or right z NULL 2 then y z 3 else y SUCCESSOR z 4 if left y lt gt NULL 5 then x left y 6 else x right y 7 if x lt gt NULL 8 then p x p y 9 if p y NULL 10 then root T x 11 else if y left p y 12 then left p y x 13 else right p y x 14 if y lt gt z 15 then val z val y 16 kopiyuvannya dodatkovih danih z y 17 return y Chas na vikonannya ciyeyi proceduri ye takozh O h Div takozhU Vikidzherelah ye prikladi realizacij algoritmiv roboti z binarnimi derevami poshukuVikiPidruchnik VikiPidruchnik Mova programuvannya Lisp maye dani stosovno Dereva Zbalansovane derevo AVL derevo B derevo Chervono chorne derevo Spisok struktur danih Sortuvannya dvijkovim derevomPrimitkiTomas Kormen Charlz Lejzerson Ronald Rivest Kliford Stajn 2009 1990 Rozdil 12 Dvijkovi dereva poshuku Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 DzherelaTomas Kormen Charlz Lejzerson Ronald Rivest Kliford Stajn 2009 1990 Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 Donald Knut Sorting and Searching The Art of Computer Programming Massachusetts Addison Wesley 1998 T 3 780 s ISBN 0 201 89685 0 angl
Топ