genskap inære Søketre inære Søketre t binært søketre er organisert som et binærtre, og har følgende egenskap a x være en node i et binært søketre. vis y er en node i x s venstre subtre, vil verdi[y] verdi[x] vis y er en node i x s høyre subtre, vil verdi[y] verdi[x] ernt ngvald Sunde 1 ernt ngvald Sunde genskap : rafisk genskap : jøre ksempelfigur: O(lg n) Operasjoner på et binært søketre, er derfor proposjonal med høyden på treet 7 8 wful (verste tilfellet) 1 O(n) 7.... n inærtreet reduseres til en liste av n elementer og n nivåer ad (nesten lik wful ) O(n) inærtreet reduseres til en liste av n elementer og n nivåer når n vokser mot uendelig ernt ngvald Sunde ernt ngvald Sunde genskap : jøre genskap : Oppsumering Normal O(lg n) O(lg n) jennomsnittshøyden til et normalt tre er 1. log n. Nice Nivå: t perfekt balansert tre n elementer og log(n+1) nivåer. elementer = n nivåer 1 = -1 ernt ngvald Sunde 1 ersom det er n noder i treet vil operasjoner på treet ta: O(lg n) for et normal tre t binært søketre er derfor godt egnet for effektiv gjennfinning i et ordnet (sortert) materiale Metoden er basert på -delt splitt & hersk, og er pekerbasert ernt ngvald Sunde
Operasjoner Medlemssøk < inn node med verdi > 18 inært Søketre > 7 = Medlem (node) er da funnet jøre blir høyden til treet, O(lg n) ernt ngvald Sunde 7 ernt ngvald Sunde 8 Minimumsverdi ølg alle venstre-pekere fra roten elt til du ikke kan gå lenger, Venstre-peker er da N Maksimumverdi ølg alle høyre-pekere fra roten elt til du ikke kan gå lenger, øyre-peker er da N Minste verdi i treet er da funnet jøre blir høyden til treet, O(lg n) Største verdi i treet er da funnet jøre blir høyden til treet, O(lg n) ernt ngvald Sunde ernt ngvald Sunde 10 orgjenger til z = tterfølger til z = lle noder i høyre subtre til, er større enn. lle noder i venstre subtre til, er mindre enn. er den største verdien i venstre subtre, og er derfor forgjengeren til. ernt ngvald Sunde 11 17 er den minste verdien i høyre subtre, og er derfor etterfølgeren til. ernt ngvald Sunde 1
nnsetting av node < > 18 < 7 > Sett inn node (z) med verdi r roten=n blir z trets rot vis ikke traverser treet på samme måte som ved medlemssøk. elt til N nåes og z settes nn på rett plass i treet jøre blir høyden til treet, O(lg n) ilfelle 1: z har ingen barn ksempel z= Vi bare fjerner z ernt ngvald Sunde ernt ngvald Sunde ilfelle 1: z har ingen barn ilfelle : z har 1 barn ksempel z= Vi bare fjerner z ksempel z=7 ernt ngvald Sunde ernt ngvald Sunde 1 ilfelle : z har 1 barn ilfelle : z har 1 barn ksempel z=7 ksempel z=7 ernt ngvald Sunde 17 ernt ngvald Sunde 18
z 10 y 8 ilfelle : z har barn ksempel z= etterfølger y (8), som har 1 barn og y 8 18 10 ilfelle : z har barn ksempel z= etterfølger y (8), som har 1 barn og 11 rstatter node z med node y 11 rstatter node z med node y ernt ngvald Sunde 1 ernt ngvald Sunde 0 raversering raversering inært Søketre raversering eller ree Walk er en måte å besøke nodene i et tre på. n kan si at en sorterer nodene på en ønsket eller bestemt måte ruker en enkel rekursiv algoritme til å printe ut denne rekkefølgen ernt ngvald Sunde 1 ernt ngvald Sunde raversering : Prefix raversering : norder OP OP - øyre subtre reewalk(left[x]) reewalk(right[x]) ernt ngvald Sunde Vi får en sortert rekkefølge - øyre subtre reewalk(left[x]) reewalk(right[x]) ernt ngvald Sunde
raversering : Postix ernt ngvald Sunde OP - øyre subtre reewalk(left[x]) reewalk(right[x]) Sortering av et array Sortert rray nsetting O(lg n) otal O(lg n*n) Usortert rray N elementer ygger først et binært tre av arrayet, noe som vil ta O(n*lg n) eretter traverserer vi treet inorder, noe som vil ta O(n) S_Sort() for(i=1 to n) reensert([i]) norderreewalk(root) ernt ngvald Sunde