Przechodzenie drzewa

Przechodzenie drzewa
Ilustracja
Pre-order - jeden ze sposobów przechodzenia drzewa
Rodzaj

przechodzenie

Struktura danych

drzewo

Przechodzenie drzewa (pot. przechodzenie po drzewie) – proces odwiedzania wszystkich węzłów drzewa.

Sposoby przechodzenia drzewa binarnego

Wyróżnia się 3 sposoby rekursywnego przejścia drzewa binarnego:

  • VLR – pre-order, przejście wzdłużne,
  • LVR – in-order, przejście poprzeczne,
  • LRV – post-order, przejście wsteczne,

gdzie: Visit – „odwiedź” węzeł, Left – przejdź lewe poddrzewo, Right – przejdź prawe poddrzewo.

W przypadku gdy dane drzewo jest binarnym drzewem AST przejścia określa się również:

Niniejsze algorytmy rekurencyjne działają na drzewie binarnym:

  • Pre-order
Pre-order: F, B, A, D, C, E, G, I, H.
PRE-ORDER(wierzchołek_v)
 {
    wypisz wierzchołek_v.wartość
    jeżeli wierzchołek_v.lewy_syn != null to PRE-ORDER(wierzchołek_v.lewy_syn)
    jeżeli wierzchołek_v.prawy_syn != null to PRE-ORDER(wierzchołek_v.prawy_syn)
 }

Działanie jest wykonywane najpierw na rodzicu, następnie na synach.

  • In-order
In-order: A, B, C, D, E, F, G, H, I.
IN-ORDER(wierzchołek_v)
 {
    jeżeli wierzchołek_v.lewy_syn != null to IN-ORDER(wierzchołek_v.lewy_syn)
    wypisz wierzchołek_v.wartość
    jeżeli wierzchołek_v.prawy_syn != null to IN-ORDER(wierzchołek_v.prawy_syn)
 }

Najpierw wykonywane jest działanie na jednym z synów, następnie na rodzicu i na końcu na drugim synu. Przechodząc w ten sposób drzewo poszukiwań binarnych, otrzymuje się posortowane wartości wszystkich węzłów. Dzieje się tak dlatego, że w drzewie poszukiwań binarnych wartości lewego syna węzła n oraz wszystkich jego potomków są mniejsze od wartości n, a wartości prawego syna i jego potomków większe od wartości n.

  • Post-order
Post-order: A, C, E, D, B, H, I, G, F.
POST-ORDER(wierzchołek_v)
 {
    jeżeli wierzchołek_v.lewy_syn != null to POST-ORDER(wierzchołek_v.lewy_syn)
    jeżeli wierzchołek_v.prawy_syn != null to POST-ORDER(wierzchołek_v.prawy_syn)
    wypisz wierzchołek_v.wartość
 }

Działanie jest wykonywane najpierw na wszystkich synach, na końcu na rodzicu.

Sposoby przechodzenia dowolnego drzewa

Następujące algorytmy działają na ogólnym drzewie, którego każdy wierzchołek może mieć dowolnie wiele synów:

  • Pre-order
 PRE-ORDER(wierzchołek_v)
 {
    wypisz wierzchołek_v.wartość
    dla każdego wierzchołka w będącego synem wierzchołka_v:
        PRE-ORDER(w)
 }
  • Post-order
 POST-ORDER(wierzchołek_v)
 {
    dla każdego wierzchołka w będącego synem wierzchołka_v:
        POST-ORDER(w)
    wypisz wierzchołek_v.wartość
 }
  • Nie istnieje algorytm In-order dla drzewa niebędącego drzewem binarnym. Porządek in-order wymaga odwiedzenia węzła–rodzica po lewym a przed prawym dzieckiem. W drzewie nie binarnym, tj. gdy węzły mogą mieć więcej niż 2 potomków, nie da się jednoznacznie zdefiniować dziecka lewego i prawego (np. przy 3 węzłach–dzieciach (potomkach) będzie przynajmniej 2 dzieci lewych albo 2 dzieci prawych), stąd zasadnicza niemożność spełnienia tego porządku.

Przykład

W tym drzewie binarnym podstawowe algorytmy odwiedzają węzły w następującej kolejności:

  • pre-order: F, B, A, D, C, E, G, I, H
  • post-order: A, C, E, D, B, H, I, G, F
  • in-order: A, B, C, D, E, F, G, H, I


Przykład przejścia binarnego drzewa AST opisującego wyrażenie arytmetyczne

(1*(2-3))+(4+5)

in-order - notacja wrostkowa

(1*(2-3))+(4+5)

Notacja wrostkowa wymaga nawiasów do zdefiniowania kolejności wykonywania operacji.

Część nawiasów z powyższego zapisu może zostać opuszczona bez uszczerbku dla wyniku wyrażenia arytmetycznego. Jednak po usunięciu nadmiarowych (z punktu widzenia poprawności wyniku) nawiasów zapis przestanie być wzajemnie jednoznaczny z przytoczonym drzewem.

Konkretniej: z przytoczonego drzewa wynika, że operacja +(4,5) powinna zostać wykonana przed + z korzenia. Po opuszczeniu nawiasów powstałaby dowolność w kolejności wykonywania + i z zapisu bez 'nadmiarowych' nawiasów byłoby możliwe wyprowadznie więcej niż jednego drzewa. Inaczej: z łączności dodawania wynika, że na drzewie składniowym dopuszczalne są obroty operacji + względem siebie.

pre-order - notacja polska

+ * 1 - 2 3 + 4 5

lub nawiązując do języków programowania:

plus(razy(1,minus(2,3)),plus(4,5))

post-order - odwrotna notacja polska (RPN)

1 2 3 - * 4 5 + +

W latach 70. kalkulatory RPN były popularne w kręgach finansowych. Obliczenia z wykorzystaniem RPN używają stosu. Współcześnie powyższe wyrażenie może zostać wykonane przy pomocy kalkulatora dc.

$ dc
1 2 3 - * 4 5 + +
p
8

Komenda p zwraca wartość na wierzchołku stosu, czyli w tym przypadku ostateczny wynik wyrażenia.

Levelorder

Level-order: F, B, G, A, D, I, C, E, H.

Istnieje również metoda przechodzenia levelorder, która polega na odwiedzaniu wierzchołków kolejno według wzrastającego poziomu zagłębienia. Jest ona implementowana przy użyciu algorytmu przeszukiwania wszerz (BFS), np. z wykorzystaniem kolejki. W przykładowym drzewie powyżej metoda ta odwiedza węzły w kolejności:

  • level-order: F, B, G, A, D, I, C, E, H.
LEVEL-ORDER(wierzchołek_v)
 {
    utwórz kolejkę wierzchołków k
    wstaw wierzchołek_v do kolejki

    dopóki kolejka nie jest pusta:

        pobierz z kolejki wierzchołek w
        wypisz wierzchołek_w.wartość

        dla każdego wierzchołka u będącego potomkiem wierzchołka w:
            wstaw wierzchołek u do kolejki
 }

Read other articles:

Online legal research service Bloomberg LawType of siteSubscription-based service for online legal researchAvailable inEnglishOwnerMichael Bloomberg (88%) and Bank of America (12%; through Merrill Lynch)ParentBloomberg L.P.URLpro.bloomberglaw.comCommercialYesRegistrationRequiredLaunched2010; 14 years ago (2010)Current statusOnline Bloomberg Law is a subscription-based service that uses data analytics and artificial intelligence for online legal research. The servic...

 

Senapan kopak milik Philip V dari Spanyol, dibuat oleh A. Tienza, Madrid sekitar tahun 1715. Itu datang dengan patrun yang bisa digunakan kembali yang siap pakai. Ini adalah sistem miquelet. Senapan kopak adalah senapan yang diisi dari bagian belakang laras (breech-loader). Ia juga dikenal sebagai senapan kulai atau senapan patah. Etimologi Ia berasal dari 2 kata, yaitu senapan dan kopak. Senapan berarti senjata api berlaras panjang. Ia merupakan korupsi dari kata Belanda snappaan.[1]...

 

For other places with the same name, see Gmina Konopnica. Gmina in Łódź Voivodeship, PolandGmina Konopnica Konopnica CommuneGmina Coat of armsCoordinates (Konopnica): 51°21′14″N 18°49′24″E / 51.35389°N 18.82333°E / 51.35389; 18.82333Country PolandVoivodeshipŁódźCountyWieluńSeatKonopnicaArea • Total83.06 km2 (32.07 sq mi)Population (2006) • Total3,897 • Density47/km2 (120/sq mi)Webs...

هذه المقالة تحتاج للمزيد من الوصلات للمقالات الأخرى للمساعدة في ترابط مقالات الموسوعة. فضلًا ساعد في تحسين هذه المقالة بإضافة وصلات إلى المقالات المتعلقة بها الموجودة في النص الحالي. (ديسمبر 2018)   لمعانٍ أخرى، طالع أتيكا (توضيح). أتيكا    علم الاسم الرسمي (باليونان...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada November 2022. Elton Divino CelioInformasi pribadiTanggal lahir 7 Juli 1987 (umur 36)Tempat lahir BrasilPosisi bermain BekKarier senior*Tahun Tim Tampil (Gol)2007 Yokohama F. Marinos * Penampilan dan gol di klub senior hanya dihitung dari liga domestik Elton Di...

 

Highway in the United States Not to be confused with U.S. Route 1/9. U.S. Route 19US 19 highlighted in redRoute informationLength1,438.2 mi (2,314.6 km)Existed1926[citation needed]–presentMajor junctionsSouth end US 41 / US 41 Bus. in Memphis, FL Major intersections I-10 near Monticello, FL I-20 / I-75 / I-85 in Atlanta, GA I-26 / I-40 in Asheville, NC I-81 in Bristol, VA I-64 / I-77 near Beckley, WV I-79 Parallel route thr...

Министерство природных ресурсов и экологии Российской Федерациисокращённо: Минприроды России Общая информация Страна  Россия Юрисдикция Россия Дата создания 12 мая 2008 Предшественники Министерство природных ресурсов Российской Федерации (1996—1998)Министерство охраны...

 

Border CavePanorama dello Swaziland visto da Border CaveUtilizzogrotta Epoca200.000 anni fa LocalizzazioneStato Sudafrica Municipalità localeKwaZulu-Natal ScaviDate scavi1940 ArcheologoW. E. Barton Mappa di localizzazione Modifica dati su Wikidata · ManualeCoordinate: 27°01′33″S 31°59′20″E / 27.025833°S 31.988889°E-27.025833; 31.988889 Vista del fiume Ingwavuma da Border Cave Border Cave è una grotta situata sulla scarpata occidentale dei monti Lebombo...

 

Marco Carnesecchi Nazionalità  Italia Altezza 191 cm Peso 80 kg Calcio Ruolo Portiere Squadra  Atalanta CarrieraGiovanili 20??-2014 Sant'Ermete2014-2017 Cesena2017-2019 AtalantaSquadre di club1 2019-2020→  Trapani33 (-52)2020-2021 Atalanta0 (0)2021-2023→  Cremonese83 (-103)2023- Atalanta25 (-27)Nazionale 2018-2019 Italia U-1914 (-12)2019-2023 Italia U-2122 (-20)Palmarès  Europei di calcio Under-19 Argento Finlandia 2018 1 I due numeri i...

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)&#...

 

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)&#...

 

Vehicle-passing maneuver Not to be confused with overtaking criterion. Overtake redirects here. For other uses, see Overtake (disambiguation). This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Overtaking – news · newspapers · books · scholar · JSTOR (September 2014) (Learn how and when to remove this message) ...

Traditional clothing of the Palestinians A woman from Ramallah, c. 1929–1946 Palestinian traditional clothing are the types of clothing historically and sometimes still presently worn by Palestinians. Foreign travelers to Palestine in the 19th and early 20th centuries often commented on the rich variety of the costumes worn, particularly by the fellaheen or village women. Many of the handcrafted garments were richly embroidered and the creation and maintenance of these items played a signif...

 

الحزب الديمقراطي الاجتماعي النمساوي   البلد النمسا  تاريخ التأسيس 30 ديسمبر 1888  المؤسسون فيكتور أدلر  قائد الحزب أندرياس بابلر (5 يونيو 2023–)[1]  عدد الأعضاء 180000   المقر الرئيسي فيينا  الأيديولوجيا ديمقراطية اجتماعية،  وماركسية نمساوية  الانحياز ال...

 

Former Ontario provincial highway King's Highway 38Highway 38 highlighted in redRoute informationMaintained by City of Kingston, South Frontenac and Central Frontenac TownshipLength66.9 km[2][3] (41.6 mi)ExistedApril 25, 1934[1]–January 1, 1998[2]Major junctionsSouth end Highway 401 in KingstonNorth end Highway 7 near Sharbot Lake LocationCountryCanadaProvinceOntarioCountiesFrontenacMajor citiesKingstonTownsS...

Biara Karmelit dan gereja di tengah kota Sombor (bahasa Serbia: Сомбор) ialah ibu kota Distrik Backa Barat, Vojvodina, Serbia. Pada tahun 2002, kota yang terletak pada 45° 47' LU dan 19° 07' BT ini berpenduduk 51.471 jiwa. Luas kota ini mencapai 1.178 km². Sombor pertama kali terekam dalam sejarah pada tahun 1340. Mayoritas penduduk kota ini berasal dari etnis Serbia. Kota kembar Baja, Hungaria Cherkasy, Ukraina Kispest, Hungaria Serba-serbi Kode pos: 25 000 Kode telepon: 025 Pranala...

 

Disambiguazione – Se stai cercando il programma televisivo di LA7, vedi Le vite degli altri (programma televisivo). Questa voce o sezione sull'argomento film drammatici non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Le vite degli altriUlrich Mühe in una scena del filmTitolo originaleDas Leben der Anderen Paese di produzioneGermania Anno2006 Durata137...

 

Axe specifically designed for combat Battleaxe redirects here. For other uses, see Battleaxe (disambiguation). Horseman's axe, circa 1475. The blade's punched decoration suggests German make. This is an example of a battle axe that was tailored for the use of a mounted knight. The wooden haft is modern. A battle axe (also battle-axe, battle ax, or battle-ax) is an axe specifically designed for combat. Battle axes were specialized versions of utility axes. Many were suitable for use in one han...

Carnivore protoparvovirus 1 Mikrograf dari Canine parvovirusKomposisi genom virus ICTVssDNA(+/-) (en) dan single-stranded DNA virus (en) Penyakitpanleukopenia kucing dan penyakit parvovirus anjing TaksonomiKerajaanShotokuviraeFilumCossaviricotaKelasQuintoviricetesOrdoPiccoviralesFamiliParvoviridaeGenusProtoparvovirusSpesiesCarnivore protoparvovirus 1 Anggota Canine parvovirus (CPV; CPV-2) Feline panleukopenia virus (FPLV; CPV-1) Mink enteritis virus Raccoon parvovirus (?) Carnivore protoparvo...

 

Aleksi JalliStatusActive (2009-present)Tanggal lahir20 Mei 1992 (umur 32)Tempat tinggal Helsinki, FinlandiaKebangsaan FinlandiaTim saat ini ENCE eSportsPermainanCounter-Strike: Global OffensiveRiwayat karir2013-2014 ENCE eSports2014-2015 Mousesports2015 3DMAX2015 Ninjas in Pyjamas2016 ENCE eSportsAgu 2016-Aug 2017 FaZe ClanAgu 2017-Jan 2018 OpTic GamingMar 2018-kini ENCE eSports Aleksi Jalli (lahir 20 Mei 1992) dan dikenal dengan nama allu, adalah seorang pemain Counter-Strike: Global Of...