[{"data":1,"prerenderedAt":8255},["ShallowReactive",2],{"dsa-grafen":3,"dsa-nav-grafen":4981},{"id":4,"title":5,"body":6,"description":4972,"extension":4973,"icon":4974,"meta":4975,"navigation":747,"order":961,"path":4976,"seo":4977,"stem":4978,"topic":4979,"__hash__":4980},"practicelyDsa\u002Fpracticely-dsa\u002Fgrafen.md","Grafen uitgelegd: BFS, DFS, Dijkstra en topologisch sorteren",{"type":7,"value":8,"toc":4961},"minimark",[9,26,29,34,111,118,121,131,135,161,227,358,436,443,447,464,470,590,603,607,618,623,692,707,710,2130,2134,2141,2158,2161,2167,2177,2336,2339,2375,2381,2384,3603,3607,3632,3635,3653,3656,3662,3665,3751,3761,4739,4743,4848,4874,4878,4930,4934,4957],[10,11,12,13,17,18,21,22,25],"p",{},"Een graaf (",[14,15,16],"em",{},"graph",") is een verzameling knopen (",[14,19,20],{},"vertices",") die met kanten (",[14,23,24],{},"edges",") verbonden zijn.\nDat klinkt abstract, maar bijna alles is een graaf: wegen tussen steden, vrienden op een sociaal\nnetwerk, links tussen webpagina's, vakken met hun voorkennis, of pakketten die van elkaar afhangen.",[10,27,28],{},"Wie grafen beheerst, kan een hele klasse problemen oplossen met een handvol algoritmen. Op het\ntentamen traceer je BFS, DFS en Dijkstra met de hand. In sollicitaties vermomt een graafprobleem zich\nvaak als iets anders (\"hoeveel eilanden staan er in dit raster?\"). En in de praktijk draaien\nrouteplanners, build-tools en package managers op precies deze algoritmen.",[30,31,33],"h2",{"id":32},"begrippen","Begrippen",[35,36,37,54,66,75,84,101],"ul",{},[38,39,40,44,45,48,49,53],"li",{},[41,42,43],"strong",{},"Ongericht"," (",[14,46,47],{},"undirected","): een kant ",[50,51,52],"code",{},"A–B"," kun je in beide richtingen volgen (vriendschap).",[38,55,56,44,59,48,62,65],{},[41,57,58],{},"Gericht",[14,60,61],{},"directed",[50,63,64],{},"A → B"," heeft één richting (volgen op sociale media, \"A is\nvoorkennis voor B\").",[38,67,68,44,71,74],{},[41,69,70],{},"Gewogen",[14,72,73],{},"weighted","): elke kant heeft een getal, bijvoorbeeld een afstand of een reistijd.",[38,76,77,44,80,83],{},[41,78,79],{},"Buren",[14,81,82],{},"neighbours","): de knopen die met één kant bereikbaar zijn.",[38,85,86,44,89,92,93,96,97,100],{},[41,87,88],{},"Graad",[14,90,91],{},"degree","): het aantal kanten aan een knoop. Bij een gerichte graaf onderscheid je\ningangsgraad (",[14,94,95],{},"in-degree",") en uitgangsgraad (",[14,98,99],{},"out-degree",").",[38,102,103,106,107,110],{},[50,104,105],{},"V"," is het aantal knopen, ",[50,108,109],{},"E"," het aantal kanten.",[10,112,113,114,117],{},"Knopen noteren we als hoofdletters. ",[41,115,116],{},"Buren bekijk je altijd in alfabetische volgorde","; anders zijn\ner meerdere goede antwoorden op een traceervraag.",[10,119,120],{},"We gebruiken deze ongerichte graaf met zes knopen en zeven kanten:",[122,123,128],"pre",{"className":124,"code":126,"language":127},[125],"language-text","A --- B --- C\n|     |     |\nD --- E --- F\n","text",[50,129,126],{"__ignoreMap":130},"",[30,132,134],{"id":133},"representatie-lijst-of-matrix","Representatie: lijst of matrix",[10,136,137,138,44,141,144,145,148,149,152,153,156,157,160],{},"Een ",[41,139,140],{},"adjacency list",[14,142,143],{},"buurlijst",") slaat per knoop de lijst van buren op. Een ",[41,146,147],{},"adjacency matrix","\n(",[14,150,151],{},"buurmatrix",") is een ",[50,154,155],{},"V × V","-tabel met een ",[50,158,159],{},"1"," als er een kant is.",[162,163,164,176],"table",{},[165,166,167],"thead",{},[168,169,170,174],"tr",{},[171,172,173],"th",{},"Knoop",[171,175,79],{},[177,178,179,188,196,204,212,219],"tbody",{},[168,180,181,185],{},[182,183,184],"td",{},"A",[182,186,187],{},"B, D",[168,189,190,193],{},[182,191,192],{},"B",[182,194,195],{},"A, C, E",[168,197,198,201],{},[182,199,200],{},"C",[182,202,203],{},"B, F",[168,205,206,209],{},[182,207,208],{},"D",[182,210,211],{},"A, E",[168,213,214,216],{},[182,215,109],{},[182,217,218],{},"B, D, F",[168,220,221,224],{},[182,222,223],{},"F",[182,225,226],{},"C, E",[162,228,229,247],{},[165,230,231],{},[168,232,233,235,237,239,241,243,245],{},[171,234],{},[171,236,184],{},[171,238,192],{},[171,240,200],{},[171,242,208],{},[171,244,109],{},[171,246,223],{},[177,248,249,268,286,304,322,340],{},[168,250,251,255,258,260,262,264,266],{},[182,252,253],{},[41,254,184],{},[182,256,257],{},"0",[182,259,159],{},[182,261,257],{},[182,263,159],{},[182,265,257],{},[182,267,257],{},[168,269,270,274,276,278,280,282,284],{},[182,271,272],{},[41,273,192],{},[182,275,159],{},[182,277,257],{},[182,279,159],{},[182,281,257],{},[182,283,159],{},[182,285,257],{},[168,287,288,292,294,296,298,300,302],{},[182,289,290],{},[41,291,200],{},[182,293,257],{},[182,295,159],{},[182,297,257],{},[182,299,257],{},[182,301,257],{},[182,303,159],{},[168,305,306,310,312,314,316,318,320],{},[182,307,308],{},[41,309,208],{},[182,311,159],{},[182,313,257],{},[182,315,257],{},[182,317,257],{},[182,319,159],{},[182,321,257],{},[168,323,324,328,330,332,334,336,338],{},[182,325,326],{},[41,327,109],{},[182,329,257],{},[182,331,159],{},[182,333,257],{},[182,335,159],{},[182,337,257],{},[182,339,159],{},[168,341,342,346,348,350,352,354,356],{},[182,343,344],{},[41,345,223],{},[182,347,257],{},[182,349,257],{},[182,351,159],{},[182,353,257],{},[182,355,159],{},[182,357,257],{},[162,359,360,372],{},[165,361,362],{},[168,363,364,366,369],{},[171,365],{},[171,367,368],{},"Adjacency list",[171,370,371],{},"Adjacency matrix",[177,373,374,389,408,425],{},[168,375,376,379,384],{},[182,377,378],{},"Geheugen",[182,380,381],{},[50,382,383],{},"O(V + E)",[182,385,386],{},[50,387,388],{},"O(V²)",[168,390,391,398,403],{},[182,392,393,394,397],{},"Bestaat kant ",[50,395,396],{},"u–v","?",[182,399,400],{},[50,401,402],{},"O(graad van u)",[182,404,405],{},[50,406,407],{},"O(1)",[168,409,410,416,420],{},[182,411,412,413],{},"Alle buren van ",[50,414,415],{},"u",[182,417,418],{},[50,419,402],{},[182,421,422],{},[50,423,424],{},"O(V)",[168,426,427,430,433],{},[182,428,429],{},"Geschikt voor",[182,431,432],{},"ijle grafen (weinig kanten)",[182,434,435],{},"dichte grafen",[10,437,438,439,442],{},"De meeste echte grafen zijn ijl (",[14,440,441],{},"sparse","): een wegennet heeft miljoenen kruispunten, maar elk\nkruispunt maar een paar wegen. Daarom is de adjacency list de standaard. Bij een ongerichte graaf\nstaat elke kant twee keer in de lijst (en is de matrix symmetrisch).",[30,444,446],{"id":445},"breedte-eerst-zoeken-bfs","Breedte-eerst zoeken (BFS)",[10,448,449,450,453,454,459,460,463],{},"Breedte-eerst zoeken (",[14,451,452],{},"breadth-first search",") verkent de graaf in lagen: eerst de startknoop, dan\nalle buren, dan de buren daarvan. Het gebruikt een ",[455,456,458],"a",{"href":457},"\u002Fpracticely\u002Fdsa\u002Fstapels-en-wachtrijen","wachtrij",".\nEen knoop telt als ",[41,461,462],{},"bezocht zodra hij in de wachtrij komt",", zodat hij er nooit twee keer in staat.",[10,465,466,467,469],{},"BFS vanaf ",[50,468,184],{},":",[162,471,472,488],{},[165,473,474],{},[168,475,476,479,482,485],{},[171,477,478],{},"Stap",[171,480,481],{},"Haal uit wachtrij",[171,483,484],{},"Nieuwe buren erbij",[171,486,487],{},"Wachtrij daarna",[177,489,490,504,517,532,547,561,576],{},[168,491,492,495,497,499],{},[182,493,494],{},"start",[182,496],{},[182,498,184],{},[182,500,501],{},[50,502,503],{},"[A]",[168,505,506,508,510,512],{},[182,507,159],{},[182,509,184],{},[182,511,187],{},[182,513,514],{},[50,515,516],{},"[B, D]",[168,518,519,522,524,527],{},[182,520,521],{},"2",[182,523,192],{},[182,525,526],{},"C, E (A is al bezocht)",[182,528,529],{},[50,530,531],{},"[D, C, E]",[168,533,534,537,539,542],{},[182,535,536],{},"3",[182,538,208],{},[182,540,541],{},"geen (A, E al bezocht)",[182,543,544],{},[50,545,546],{},"[C, E]",[168,548,549,552,554,556],{},[182,550,551],{},"4",[182,553,200],{},[182,555,223],{},[182,557,558],{},[50,559,560],{},"[E, F]",[168,562,563,566,568,571],{},[182,564,565],{},"5",[182,567,109],{},[182,569,570],{},"geen",[182,572,573],{},[50,574,575],{},"[F]",[168,577,578,581,583,585],{},[182,579,580],{},"6",[182,582,223],{},[182,584,570],{},[182,586,587],{},[50,588,589],{},"[]",[10,591,592,593,596,597,599,600,602],{},"Bezoekvolgorde: ",[41,594,595],{},"A, B, D, C, E, F",". In een ongewogen graaf vindt BFS de kortste route (in aantal\nkanten): ",[50,598,223],{}," ligt op afstand 3 van ",[50,601,184],{},", en BFS bereikt hem pas in de derde laag.",[30,604,606],{"id":605},"diepte-eerst-zoeken-dfs","Diepte-eerst zoeken (DFS)",[10,608,609,610,613,614,617],{},"Diepte-eerst zoeken (",[14,611,612],{},"depth-first search",") gaat zo diep mogelijk één kant op, en keert pas terug als\ner geen onbezochte buur meer is. Recursief is dat het natuurlijkst; de recursie werkt als een\n",[455,615,616],{"href":457},"stapel",".",[10,619,620,621,469],{},"DFS vanaf ",[50,622,184],{},[162,624,625,637],{},[165,626,627],{},[168,628,629,631,634],{},[171,630,478],{},[171,632,633],{},"Bezoek",[171,635,636],{},"Waarom",[177,638,639,647,656,665,674,683],{},[168,640,641,643,645],{},[182,642,159],{},[182,644,184],{},[182,646,494],{},[168,648,649,651,653],{},[182,650,521],{},[182,652,192],{},[182,654,655],{},"eerste onbezochte buur van A",[168,657,658,660,662],{},[182,659,536],{},[182,661,200],{},[182,663,664],{},"eerste onbezochte buur van B (A is al bezocht)",[168,666,667,669,671],{},[182,668,551],{},[182,670,223],{},[182,672,673],{},"eerste onbezochte buur van C",[168,675,676,678,680],{},[182,677,565],{},[182,679,109],{},[182,681,682],{},"eerste onbezochte buur van F (C al bezocht)",[168,684,685,687,689],{},[182,686,580],{},[182,688,208],{},[182,690,691],{},"eerste onbezochte buur van E (B al bezocht)",[10,693,694,695,697,698,700,701,703,704,617],{},"Daarna heeft ",[50,696,208],{}," geen onbezochte buren meer; de recursie keert helemaal terug naar ",[50,699,184],{},", waar ",[50,702,208],{}," nu al\nbezocht is. Bezoekvolgorde: ",[41,705,706],{},"A, B, C, F, E, D",[10,708,709],{},"Zelfde graaf, zelfde start, toch een andere volgorde dan BFS. DFS gebruik je voor het vinden van\ncycli, samenhangende componenten en doolhoven.",[711,712,713,1427],"code-tabs",{},[714,715,716],"template",{"v-slot:python":130},[122,717,721],{"className":718,"code":719,"language":720,"meta":130,"style":130},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from collections import deque\n\ngraaf = {\n    \"A\": [\"B\", \"D\"], \"B\": [\"A\", \"C\", \"E\"], \"C\": [\"B\", \"F\"],\n    \"D\": [\"A\", \"E\"], \"E\": [\"B\", \"D\", \"F\"], \"F\": [\"C\", \"E\"],\n}\n\n\ndef bfs(graaf, start):\n    bezocht = {start}\n    wachtrij = deque([start])\n    volgorde = []\n    while wachtrij:\n        u = wachtrij.popleft()\n        volgorde.append(u)\n        for v in sorted(graaf[u]):  # buren alfabetisch\n            if v not in bezocht:\n                bezocht.add(v)  # bezocht zodra hij in de wachtrij komt\n                wachtrij.append(v)\n    return volgorde\n\n\ndef dfs(graaf, u, bezocht=None, volgorde=None):\n    if bezocht is None:\n        bezocht, volgorde = set(), []\n    bezocht.add(u)\n    volgorde.append(u)\n    for v in sorted(graaf[u]):  # buren alfabetisch\n        if v not in bezocht:\n            dfs(graaf, v, bezocht, volgorde)\n    return volgorde\n\n\nprint(bfs(graaf, \"A\"))  # ['A', 'B', 'D', 'C', 'E', 'F']\nprint(dfs(graaf, \"A\"))  # ['A', 'B', 'C', 'F', 'E', 'D']\n","python",[50,722,723,742,749,762,859,948,954,959,964,990,1005,1024,1035,1047,1065,1083,1114,1133,1155,1171,1180,1185,1190,1220,1235,1257,1273,1289,1313,1329,1354,1361,1366,1371,1400],{"__ignoreMap":130},[724,725,728,732,736,739],"span",{"class":726,"line":727},"line",1,[724,729,731],{"class":730},"s7zQu","from",[724,733,735],{"class":734},"sTEyZ"," collections ",[724,737,738],{"class":730},"import",[724,740,741],{"class":734}," deque\n",[724,743,745],{"class":726,"line":744},2,[724,746,748],{"emptyLinePlaceholder":747},true,"\n",[724,750,752,755,759],{"class":726,"line":751},3,[724,753,754],{"class":734},"graaf ",[724,756,758],{"class":757},"sMK4o","=",[724,760,761],{"class":757}," {\n",[724,763,765,768,771,774,776,779,781,783,785,788,791,793,795,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856],{"class":726,"line":764},4,[724,766,767],{"class":757},"    \"",[724,769,184],{"class":770},"sfazB",[724,772,773],{"class":757},"\"",[724,775,469],{"class":757},[724,777,778],{"class":757}," [",[724,780,773],{"class":757},[724,782,192],{"class":770},[724,784,773],{"class":757},[724,786,787],{"class":757},",",[724,789,790],{"class":757}," \"",[724,792,208],{"class":770},[724,794,773],{"class":757},[724,796,797],{"class":757},"],",[724,799,790],{"class":757},[724,801,192],{"class":770},[724,803,773],{"class":757},[724,805,469],{"class":757},[724,807,778],{"class":757},[724,809,773],{"class":757},[724,811,184],{"class":770},[724,813,773],{"class":757},[724,815,787],{"class":757},[724,817,790],{"class":757},[724,819,200],{"class":770},[724,821,773],{"class":757},[724,823,787],{"class":757},[724,825,790],{"class":757},[724,827,109],{"class":770},[724,829,773],{"class":757},[724,831,797],{"class":757},[724,833,790],{"class":757},[724,835,200],{"class":770},[724,837,773],{"class":757},[724,839,469],{"class":757},[724,841,778],{"class":757},[724,843,773],{"class":757},[724,845,192],{"class":770},[724,847,773],{"class":757},[724,849,787],{"class":757},[724,851,790],{"class":757},[724,853,223],{"class":770},[724,855,773],{"class":757},[724,857,858],{"class":757},"],\n",[724,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946],{"class":726,"line":861},5,[724,863,767],{"class":757},[724,865,208],{"class":770},[724,867,773],{"class":757},[724,869,469],{"class":757},[724,871,778],{"class":757},[724,873,773],{"class":757},[724,875,184],{"class":770},[724,877,773],{"class":757},[724,879,787],{"class":757},[724,881,790],{"class":757},[724,883,109],{"class":770},[724,885,773],{"class":757},[724,887,797],{"class":757},[724,889,790],{"class":757},[724,891,109],{"class":770},[724,893,773],{"class":757},[724,895,469],{"class":757},[724,897,778],{"class":757},[724,899,773],{"class":757},[724,901,192],{"class":770},[724,903,773],{"class":757},[724,905,787],{"class":757},[724,907,790],{"class":757},[724,909,208],{"class":770},[724,911,773],{"class":757},[724,913,787],{"class":757},[724,915,790],{"class":757},[724,917,223],{"class":770},[724,919,773],{"class":757},[724,921,797],{"class":757},[724,923,790],{"class":757},[724,925,223],{"class":770},[724,927,773],{"class":757},[724,929,469],{"class":757},[724,931,778],{"class":757},[724,933,773],{"class":757},[724,935,200],{"class":770},[724,937,773],{"class":757},[724,939,787],{"class":757},[724,941,790],{"class":757},[724,943,109],{"class":770},[724,945,773],{"class":757},[724,947,858],{"class":757},[724,949,951],{"class":726,"line":950},6,[724,952,953],{"class":757},"}\n",[724,955,957],{"class":726,"line":956},7,[724,958,748],{"emptyLinePlaceholder":747},[724,960,962],{"class":726,"line":961},8,[724,963,748],{"emptyLinePlaceholder":747},[724,965,967,971,975,978,982,984,987],{"class":726,"line":966},9,[724,968,970],{"class":969},"spNyl","def",[724,972,974],{"class":973},"s2Zo4"," bfs",[724,976,977],{"class":757},"(",[724,979,981],{"class":980},"sHdIc","graaf",[724,983,787],{"class":757},[724,985,986],{"class":980}," start",[724,988,989],{"class":757},"):\n",[724,991,993,996,998,1001,1003],{"class":726,"line":992},10,[724,994,995],{"class":734},"    bezocht ",[724,997,758],{"class":757},[724,999,1000],{"class":757}," {",[724,1002,494],{"class":734},[724,1004,953],{"class":757},[724,1006,1008,1011,1013,1016,1019,1021],{"class":726,"line":1007},11,[724,1009,1010],{"class":734},"    wachtrij ",[724,1012,758],{"class":757},[724,1014,1015],{"class":973}," deque",[724,1017,1018],{"class":757},"([",[724,1020,494],{"class":973},[724,1022,1023],{"class":757},"])\n",[724,1025,1027,1030,1032],{"class":726,"line":1026},12,[724,1028,1029],{"class":734},"    volgorde ",[724,1031,758],{"class":757},[724,1033,1034],{"class":757}," []\n",[724,1036,1038,1041,1044],{"class":726,"line":1037},13,[724,1039,1040],{"class":730},"    while",[724,1042,1043],{"class":734}," wachtrij",[724,1045,1046],{"class":757},":\n",[724,1048,1050,1053,1055,1057,1059,1062],{"class":726,"line":1049},14,[724,1051,1052],{"class":734},"        u ",[724,1054,758],{"class":757},[724,1056,1043],{"class":734},[724,1058,617],{"class":757},[724,1060,1061],{"class":973},"popleft",[724,1063,1064],{"class":757},"()\n",[724,1066,1068,1071,1073,1076,1078,1080],{"class":726,"line":1067},15,[724,1069,1070],{"class":734},"        volgorde",[724,1072,617],{"class":757},[724,1074,1075],{"class":973},"append",[724,1077,977],{"class":757},[724,1079,415],{"class":973},[724,1081,1082],{"class":757},")\n",[724,1084,1086,1089,1092,1095,1098,1100,1102,1105,1107,1110],{"class":726,"line":1085},16,[724,1087,1088],{"class":730},"        for",[724,1090,1091],{"class":734}," v ",[724,1093,1094],{"class":730},"in",[724,1096,1097],{"class":973}," sorted",[724,1099,977],{"class":757},[724,1101,981],{"class":973},[724,1103,1104],{"class":757},"[",[724,1106,415],{"class":973},[724,1108,1109],{"class":757},"]):",[724,1111,1113],{"class":1112},"sHwdD","  # buren alfabetisch\n",[724,1115,1117,1120,1122,1125,1128,1131],{"class":726,"line":1116},17,[724,1118,1119],{"class":730},"            if",[724,1121,1091],{"class":734},[724,1123,1124],{"class":757},"not",[724,1126,1127],{"class":757}," in",[724,1129,1130],{"class":734}," bezocht",[724,1132,1046],{"class":757},[724,1134,1136,1139,1141,1144,1146,1149,1152],{"class":726,"line":1135},18,[724,1137,1138],{"class":734},"                bezocht",[724,1140,617],{"class":757},[724,1142,1143],{"class":973},"add",[724,1145,977],{"class":757},[724,1147,1148],{"class":973},"v",[724,1150,1151],{"class":757},")",[724,1153,1154],{"class":1112},"  # bezocht zodra hij in de wachtrij komt\n",[724,1156,1158,1161,1163,1165,1167,1169],{"class":726,"line":1157},19,[724,1159,1160],{"class":734},"                wachtrij",[724,1162,617],{"class":757},[724,1164,1075],{"class":973},[724,1166,977],{"class":757},[724,1168,1148],{"class":973},[724,1170,1082],{"class":757},[724,1172,1174,1177],{"class":726,"line":1173},20,[724,1175,1176],{"class":730},"    return",[724,1178,1179],{"class":734}," volgorde\n",[724,1181,1183],{"class":726,"line":1182},21,[724,1184,748],{"emptyLinePlaceholder":747},[724,1186,1188],{"class":726,"line":1187},22,[724,1189,748],{"emptyLinePlaceholder":747},[724,1191,1193,1195,1198,1200,1202,1204,1207,1209,1211,1214,1217],{"class":726,"line":1192},23,[724,1194,970],{"class":969},[724,1196,1197],{"class":973}," dfs",[724,1199,977],{"class":757},[724,1201,981],{"class":980},[724,1203,787],{"class":757},[724,1205,1206],{"class":980}," u",[724,1208,787],{"class":757},[724,1210,1130],{"class":980},[724,1212,1213],{"class":757},"=None,",[724,1215,1216],{"class":980}," volgorde",[724,1218,1219],{"class":757},"=None):\n",[724,1221,1223,1226,1229,1232],{"class":726,"line":1222},24,[724,1224,1225],{"class":730},"    if",[724,1227,1228],{"class":734}," bezocht ",[724,1230,1231],{"class":757},"is",[724,1233,1234],{"class":757}," None:\n",[724,1236,1238,1241,1243,1246,1248,1252,1255],{"class":726,"line":1237},25,[724,1239,1240],{"class":734},"        bezocht",[724,1242,787],{"class":757},[724,1244,1245],{"class":734}," volgorde ",[724,1247,758],{"class":757},[724,1249,1251],{"class":1250},"sBMFI"," set",[724,1253,1254],{"class":757},"(),",[724,1256,1034],{"class":757},[724,1258,1260,1263,1265,1267,1269,1271],{"class":726,"line":1259},26,[724,1261,1262],{"class":734},"    bezocht",[724,1264,617],{"class":757},[724,1266,1143],{"class":973},[724,1268,977],{"class":757},[724,1270,415],{"class":973},[724,1272,1082],{"class":757},[724,1274,1276,1279,1281,1283,1285,1287],{"class":726,"line":1275},27,[724,1277,1278],{"class":734},"    volgorde",[724,1280,617],{"class":757},[724,1282,1075],{"class":973},[724,1284,977],{"class":757},[724,1286,415],{"class":973},[724,1288,1082],{"class":757},[724,1290,1292,1295,1297,1299,1301,1303,1305,1307,1309,1311],{"class":726,"line":1291},28,[724,1293,1294],{"class":730},"    for",[724,1296,1091],{"class":734},[724,1298,1094],{"class":730},[724,1300,1097],{"class":973},[724,1302,977],{"class":757},[724,1304,981],{"class":973},[724,1306,1104],{"class":757},[724,1308,415],{"class":973},[724,1310,1109],{"class":757},[724,1312,1113],{"class":1112},[724,1314,1316,1319,1321,1323,1325,1327],{"class":726,"line":1315},29,[724,1317,1318],{"class":730},"        if",[724,1320,1091],{"class":734},[724,1322,1124],{"class":757},[724,1324,1127],{"class":757},[724,1326,1130],{"class":734},[724,1328,1046],{"class":757},[724,1330,1332,1335,1337,1339,1341,1344,1346,1348,1350,1352],{"class":726,"line":1331},30,[724,1333,1334],{"class":973},"            dfs",[724,1336,977],{"class":757},[724,1338,981],{"class":973},[724,1340,787],{"class":757},[724,1342,1343],{"class":973}," v",[724,1345,787],{"class":757},[724,1347,1130],{"class":973},[724,1349,787],{"class":757},[724,1351,1216],{"class":973},[724,1353,1082],{"class":757},[724,1355,1357,1359],{"class":726,"line":1356},31,[724,1358,1176],{"class":730},[724,1360,1179],{"class":734},[724,1362,1364],{"class":726,"line":1363},32,[724,1365,748],{"emptyLinePlaceholder":747},[724,1367,1369],{"class":726,"line":1368},33,[724,1370,748],{"emptyLinePlaceholder":747},[724,1372,1374,1377,1379,1382,1384,1386,1388,1390,1392,1394,1397],{"class":726,"line":1373},34,[724,1375,1376],{"class":973},"print",[724,1378,977],{"class":757},[724,1380,1381],{"class":973},"bfs",[724,1383,977],{"class":757},[724,1385,981],{"class":973},[724,1387,787],{"class":757},[724,1389,790],{"class":757},[724,1391,184],{"class":770},[724,1393,773],{"class":757},[724,1395,1396],{"class":757},"))",[724,1398,1399],{"class":1112},"  # ['A', 'B', 'D', 'C', 'E', 'F']\n",[724,1401,1403,1405,1407,1410,1412,1414,1416,1418,1420,1422,1424],{"class":726,"line":1402},35,[724,1404,1376],{"class":973},[724,1406,977],{"class":757},[724,1408,1409],{"class":973},"dfs",[724,1411,977],{"class":757},[724,1413,981],{"class":973},[724,1415,787],{"class":757},[724,1417,790],{"class":757},[724,1419,184],{"class":770},[724,1421,773],{"class":757},[724,1423,1396],{"class":757},[724,1425,1426],{"class":1112},"  # ['A', 'B', 'C', 'F', 'E', 'D']\n",[714,1428,1429],{"v-slot:java":130},[122,1430,1434],{"className":1431,"code":1432,"language":1433,"meta":130,"style":130},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import java.util.*;\n\nstatic List\u003CString> bfs(Map\u003CString, List\u003CString>> graaf, String start) {\n    Set\u003CString> bezocht = new HashSet\u003C>(List.of(start));\n    Deque\u003CString> wachtrij = new ArrayDeque\u003C>(List.of(start));\n    List\u003CString> volgorde = new ArrayList\u003C>();\n    while (!wachtrij.isEmpty()) {\n        String u = wachtrij.poll();\n        volgorde.add(u);\n        List\u003CString> buren = new ArrayList\u003C>(graaf.get(u));\n        Collections.sort(buren); \u002F\u002F buren alfabetisch\n        for (String v : buren) {\n            if (bezocht.add(v)) { \u002F\u002F bezocht zodra hij in de wachtrij komt\n                wachtrij.add(v);\n            }\n        }\n    }\n    return volgorde;\n}\n\nstatic List\u003CString> dfs(Map\u003CString, List\u003CString>> graaf, String start) {\n    List\u003CString> volgorde = new ArrayList\u003C>();\n    dfsBezoek(graaf, start, new HashSet\u003C>(), volgorde);\n    return volgorde;\n}\n\nprivate static void dfsBezoek(Map\u003CString, List\u003CString>> graaf, String u,\n                              Set\u003CString> bezocht, List\u003CString> volgorde) {\n    bezocht.add(u);\n    volgorde.add(u);\n    List\u003CString> buren = new ArrayList\u003C>(graaf.get(u));\n    Collections.sort(buren); \u002F\u002F buren alfabetisch\n    for (String v : buren) {\n        if (!bezocht.contains(v)) dfsBezoek(graaf, v, bezocht, volgorde);\n    }\n}\n","java",[50,1435,1436,1457,1461,1514,1553,1588,1611,1630,1650,1665,1700,1721,1740,1764,1778,1783,1788,1793,1801,1805,1809,1853,1873,1899,1907,1911,1915,1958,1987,2001,2015,2047,2064,2082,2121,2125],{"__ignoreMap":130},[724,1437,1438,1441,1444,1446,1449,1451,1454],{"class":726,"line":727},[724,1439,738],{"class":1440},"sbssI",[724,1442,1443],{"class":969}," java",[724,1445,617],{"class":757},[724,1447,1448],{"class":969},"util",[724,1450,617],{"class":757},[724,1452,1453],{"class":734},"*",[724,1455,1456],{"class":757},";\n",[724,1458,1459],{"class":726,"line":744},[724,1460,748],{"emptyLinePlaceholder":747},[724,1462,1463,1466,1469,1472,1475,1478,1480,1482,1485,1487,1489,1491,1493,1495,1497,1500,1503,1505,1508,1510,1512],{"class":726,"line":751},[724,1464,1465],{"class":969},"static",[724,1467,1468],{"class":969}," List",[724,1470,1471],{"class":757},"\u003C",[724,1473,1474],{"class":734},"String",[724,1476,1477],{"class":757},">",[724,1479,974],{"class":973},[724,1481,977],{"class":757},[724,1483,1484],{"class":969},"Map",[724,1486,1471],{"class":757},[724,1488,1474],{"class":734},[724,1490,787],{"class":757},[724,1492,1468],{"class":969},[724,1494,1471],{"class":757},[724,1496,1474],{"class":734},[724,1498,1499],{"class":757},">>",[724,1501,1502],{"class":734}," graaf",[724,1504,787],{"class":757},[724,1506,1507],{"class":969}," String",[724,1509,986],{"class":734},[724,1511,1151],{"class":757},[724,1513,761],{"class":757},[724,1515,1516,1519,1521,1523,1525,1527,1529,1532,1535,1538,1541,1543,1546,1548,1550],{"class":726,"line":764},[724,1517,1518],{"class":969},"    Set",[724,1520,1471],{"class":757},[724,1522,1474],{"class":969},[724,1524,1477],{"class":757},[724,1526,1228],{"class":734},[724,1528,758],{"class":757},[724,1530,1531],{"class":730}," new",[724,1533,1534],{"class":969}," HashSet",[724,1536,1537],{"class":757},"\u003C>(",[724,1539,1540],{"class":734},"List",[724,1542,617],{"class":757},[724,1544,1545],{"class":973},"of",[724,1547,977],{"class":757},[724,1549,494],{"class":734},[724,1551,1552],{"class":757},"));\n",[724,1554,1555,1558,1560,1562,1564,1567,1569,1571,1574,1576,1578,1580,1582,1584,1586],{"class":726,"line":861},[724,1556,1557],{"class":969},"    Deque",[724,1559,1471],{"class":757},[724,1561,1474],{"class":969},[724,1563,1477],{"class":757},[724,1565,1566],{"class":734}," wachtrij ",[724,1568,758],{"class":757},[724,1570,1531],{"class":730},[724,1572,1573],{"class":969}," ArrayDeque",[724,1575,1537],{"class":757},[724,1577,1540],{"class":734},[724,1579,617],{"class":757},[724,1581,1545],{"class":973},[724,1583,977],{"class":757},[724,1585,494],{"class":734},[724,1587,1552],{"class":757},[724,1589,1590,1593,1595,1597,1599,1601,1603,1605,1608],{"class":726,"line":950},[724,1591,1592],{"class":969},"    List",[724,1594,1471],{"class":757},[724,1596,1474],{"class":969},[724,1598,1477],{"class":757},[724,1600,1245],{"class":734},[724,1602,758],{"class":757},[724,1604,1531],{"class":730},[724,1606,1607],{"class":969}," ArrayList",[724,1609,1610],{"class":757},"\u003C>();\n",[724,1612,1613,1615,1618,1620,1622,1625,1628],{"class":726,"line":956},[724,1614,1040],{"class":730},[724,1616,1617],{"class":757}," (!",[724,1619,458],{"class":734},[724,1621,617],{"class":757},[724,1623,1624],{"class":973},"isEmpty",[724,1626,1627],{"class":757},"())",[724,1629,761],{"class":757},[724,1631,1632,1635,1638,1640,1642,1644,1647],{"class":726,"line":961},[724,1633,1634],{"class":969},"        String",[724,1636,1637],{"class":734}," u ",[724,1639,758],{"class":757},[724,1641,1043],{"class":734},[724,1643,617],{"class":757},[724,1645,1646],{"class":973},"poll",[724,1648,1649],{"class":757},"();\n",[724,1651,1652,1654,1656,1658,1660,1662],{"class":726,"line":966},[724,1653,1070],{"class":734},[724,1655,617],{"class":757},[724,1657,1143],{"class":973},[724,1659,977],{"class":757},[724,1661,415],{"class":734},[724,1663,1664],{"class":757},");\n",[724,1666,1667,1670,1672,1674,1676,1679,1681,1683,1685,1687,1689,1691,1694,1696,1698],{"class":726,"line":992},[724,1668,1669],{"class":969},"        List",[724,1671,1471],{"class":757},[724,1673,1474],{"class":969},[724,1675,1477],{"class":757},[724,1677,1678],{"class":734}," buren ",[724,1680,758],{"class":757},[724,1682,1531],{"class":730},[724,1684,1607],{"class":969},[724,1686,1537],{"class":757},[724,1688,981],{"class":734},[724,1690,617],{"class":757},[724,1692,1693],{"class":973},"get",[724,1695,977],{"class":757},[724,1697,415],{"class":734},[724,1699,1552],{"class":757},[724,1701,1702,1705,1707,1710,1712,1715,1718],{"class":726,"line":1007},[724,1703,1704],{"class":734},"        Collections",[724,1706,617],{"class":757},[724,1708,1709],{"class":973},"sort",[724,1711,977],{"class":757},[724,1713,1714],{"class":734},"buren",[724,1716,1717],{"class":757},");",[724,1719,1720],{"class":1112}," \u002F\u002F buren alfabetisch\n",[724,1722,1723,1725,1727,1729,1731,1733,1736,1738],{"class":726,"line":1026},[724,1724,1088],{"class":730},[724,1726,44],{"class":757},[724,1728,1474],{"class":969},[724,1730,1091],{"class":734},[724,1732,469],{"class":730},[724,1734,1735],{"class":734}," buren",[724,1737,1151],{"class":757},[724,1739,761],{"class":757},[724,1741,1742,1744,1746,1749,1751,1753,1755,1757,1759,1761],{"class":726,"line":1037},[724,1743,1119],{"class":730},[724,1745,44],{"class":757},[724,1747,1748],{"class":734},"bezocht",[724,1750,617],{"class":757},[724,1752,1143],{"class":973},[724,1754,977],{"class":757},[724,1756,1148],{"class":734},[724,1758,1396],{"class":757},[724,1760,1000],{"class":757},[724,1762,1763],{"class":1112}," \u002F\u002F bezocht zodra hij in de wachtrij komt\n",[724,1765,1766,1768,1770,1772,1774,1776],{"class":726,"line":1049},[724,1767,1160],{"class":734},[724,1769,617],{"class":757},[724,1771,1143],{"class":973},[724,1773,977],{"class":757},[724,1775,1148],{"class":734},[724,1777,1664],{"class":757},[724,1779,1780],{"class":726,"line":1067},[724,1781,1782],{"class":757},"            }\n",[724,1784,1785],{"class":726,"line":1085},[724,1786,1787],{"class":757},"        }\n",[724,1789,1790],{"class":726,"line":1116},[724,1791,1792],{"class":757},"    }\n",[724,1794,1795,1797,1799],{"class":726,"line":1135},[724,1796,1176],{"class":730},[724,1798,1216],{"class":734},[724,1800,1456],{"class":757},[724,1802,1803],{"class":726,"line":1157},[724,1804,953],{"class":757},[724,1806,1807],{"class":726,"line":1173},[724,1808,748],{"emptyLinePlaceholder":747},[724,1810,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851],{"class":726,"line":1182},[724,1812,1465],{"class":969},[724,1814,1468],{"class":969},[724,1816,1471],{"class":757},[724,1818,1474],{"class":734},[724,1820,1477],{"class":757},[724,1822,1197],{"class":973},[724,1824,977],{"class":757},[724,1826,1484],{"class":969},[724,1828,1471],{"class":757},[724,1830,1474],{"class":734},[724,1832,787],{"class":757},[724,1834,1468],{"class":969},[724,1836,1471],{"class":757},[724,1838,1474],{"class":734},[724,1840,1499],{"class":757},[724,1842,1502],{"class":734},[724,1844,787],{"class":757},[724,1846,1507],{"class":969},[724,1848,986],{"class":734},[724,1850,1151],{"class":757},[724,1852,761],{"class":757},[724,1854,1855,1857,1859,1861,1863,1865,1867,1869,1871],{"class":726,"line":1187},[724,1856,1592],{"class":969},[724,1858,1471],{"class":757},[724,1860,1474],{"class":969},[724,1862,1477],{"class":757},[724,1864,1245],{"class":734},[724,1866,758],{"class":757},[724,1868,1531],{"class":730},[724,1870,1607],{"class":969},[724,1872,1610],{"class":757},[724,1874,1875,1878,1880,1882,1884,1886,1888,1890,1892,1895,1897],{"class":726,"line":1192},[724,1876,1877],{"class":973},"    dfsBezoek",[724,1879,977],{"class":757},[724,1881,981],{"class":734},[724,1883,787],{"class":757},[724,1885,986],{"class":734},[724,1887,787],{"class":757},[724,1889,1531],{"class":730},[724,1891,1534],{"class":969},[724,1893,1894],{"class":757},"\u003C>(),",[724,1896,1216],{"class":734},[724,1898,1664],{"class":757},[724,1900,1901,1903,1905],{"class":726,"line":1222},[724,1902,1176],{"class":730},[724,1904,1216],{"class":734},[724,1906,1456],{"class":757},[724,1908,1909],{"class":726,"line":1237},[724,1910,953],{"class":757},[724,1912,1913],{"class":726,"line":1259},[724,1914,748],{"emptyLinePlaceholder":747},[724,1916,1917,1920,1923,1926,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955],{"class":726,"line":1275},[724,1918,1919],{"class":969},"private",[724,1921,1922],{"class":969}," static",[724,1924,1925],{"class":969}," void",[724,1927,1928],{"class":973}," dfsBezoek",[724,1930,977],{"class":757},[724,1932,1484],{"class":969},[724,1934,1471],{"class":757},[724,1936,1474],{"class":734},[724,1938,787],{"class":757},[724,1940,1468],{"class":969},[724,1942,1471],{"class":757},[724,1944,1474],{"class":734},[724,1946,1499],{"class":757},[724,1948,1502],{"class":734},[724,1950,787],{"class":757},[724,1952,1507],{"class":969},[724,1954,1206],{"class":734},[724,1956,1957],{"class":757},",\n",[724,1959,1960,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985],{"class":726,"line":1291},[724,1961,1962],{"class":969},"                              Set",[724,1964,1471],{"class":757},[724,1966,1474],{"class":734},[724,1968,1477],{"class":757},[724,1970,1130],{"class":734},[724,1972,787],{"class":757},[724,1974,1468],{"class":969},[724,1976,1471],{"class":757},[724,1978,1474],{"class":734},[724,1980,1477],{"class":757},[724,1982,1216],{"class":734},[724,1984,1151],{"class":757},[724,1986,761],{"class":757},[724,1988,1989,1991,1993,1995,1997,1999],{"class":726,"line":1315},[724,1990,1262],{"class":734},[724,1992,617],{"class":757},[724,1994,1143],{"class":973},[724,1996,977],{"class":757},[724,1998,415],{"class":734},[724,2000,1664],{"class":757},[724,2002,2003,2005,2007,2009,2011,2013],{"class":726,"line":1331},[724,2004,1278],{"class":734},[724,2006,617],{"class":757},[724,2008,1143],{"class":973},[724,2010,977],{"class":757},[724,2012,415],{"class":734},[724,2014,1664],{"class":757},[724,2016,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045],{"class":726,"line":1356},[724,2018,1592],{"class":969},[724,2020,1471],{"class":757},[724,2022,1474],{"class":969},[724,2024,1477],{"class":757},[724,2026,1678],{"class":734},[724,2028,758],{"class":757},[724,2030,1531],{"class":730},[724,2032,1607],{"class":969},[724,2034,1537],{"class":757},[724,2036,981],{"class":734},[724,2038,617],{"class":757},[724,2040,1693],{"class":973},[724,2042,977],{"class":757},[724,2044,415],{"class":734},[724,2046,1552],{"class":757},[724,2048,2049,2052,2054,2056,2058,2060,2062],{"class":726,"line":1363},[724,2050,2051],{"class":734},"    Collections",[724,2053,617],{"class":757},[724,2055,1709],{"class":973},[724,2057,977],{"class":757},[724,2059,1714],{"class":734},[724,2061,1717],{"class":757},[724,2063,1720],{"class":1112},[724,2065,2066,2068,2070,2072,2074,2076,2078,2080],{"class":726,"line":1368},[724,2067,1294],{"class":730},[724,2069,44],{"class":757},[724,2071,1474],{"class":969},[724,2073,1091],{"class":734},[724,2075,469],{"class":730},[724,2077,1735],{"class":734},[724,2079,1151],{"class":757},[724,2081,761],{"class":757},[724,2083,2084,2086,2088,2090,2092,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119],{"class":726,"line":1373},[724,2085,1318],{"class":730},[724,2087,1617],{"class":757},[724,2089,1748],{"class":734},[724,2091,617],{"class":757},[724,2093,2094],{"class":973},"contains",[724,2096,977],{"class":757},[724,2098,1148],{"class":734},[724,2100,1396],{"class":757},[724,2102,1928],{"class":973},[724,2104,977],{"class":757},[724,2106,981],{"class":734},[724,2108,787],{"class":757},[724,2110,1343],{"class":734},[724,2112,787],{"class":757},[724,2114,1130],{"class":734},[724,2116,787],{"class":757},[724,2118,1216],{"class":734},[724,2120,1664],{"class":757},[724,2122,2123],{"class":726,"line":1402},[724,2124,1792],{"class":757},[724,2126,2128],{"class":726,"line":2127},36,[724,2129,953],{"class":757},[30,2131,2133],{"id":2132},"kortste-paden-dijkstra","Kortste paden: Dijkstra",[10,2135,2136,2137,2140],{},"In een gewogen graaf is de route met de minste kanten niet altijd de kortste. Het algoritme van\nDijkstra vindt de kortste afstand van één startknoop naar alle andere knopen, zolang ",[41,2138,2139],{},"alle gewichten\nniet-negatief"," zijn.",[10,2142,2143,2144,2146,2147,2150,2151,2154,2155,100],{},"Het idee: houd voor elke knoop de beste bekende afstand bij (start op ",[50,2145,257],{},", de rest op ",[50,2148,2149],{},"∞","). Kies\nsteeds de nog niet afgeronde knoop met de ",[41,2152,2153],{},"kleinste"," afstand; die afstand is definitief. Bekijk dan\nzijn buren: is de route via deze knoop korter, verlaag dan hun afstand (",[14,2156,2157],{},"relaxatie",[10,2159,2160],{},"Dezelfde graaf, nu met gewichten:",[122,2162,2165],{"className":2163,"code":2164,"language":127},[125],"A --4-- B --3-- C\n|       |       |\n1       1       2\n|       |       |\nD --2-- E --5-- F\n",[50,2166,2164],{"__ignoreMap":130},[10,2168,2169,2170,2172,2173,2176],{},"Dijkstra vanaf ",[50,2171,184],{}," (de tabel toont de afstanden ",[41,2174,2175],{},"na"," het verwerken van de gekozen knoop):",[162,2178,2179,2200],{},[165,2180,2181],{},[168,2182,2183,2185,2188,2190,2192,2194,2196,2198],{},[171,2184,478],{},[171,2186,2187],{},"Kies (afstand)",[171,2189,184],{},[171,2191,192],{},[171,2193,200],{},[171,2195,208],{},[171,2197,109],{},[171,2199,223],{},[177,2201,2202,2220,2239,2258,2278,2298,2317],{},[168,2203,2204,2206,2208,2210,2212,2214,2216,2218],{},[182,2205,494],{},[182,2207],{},[182,2209,257],{},[182,2211,2149],{},[182,2213,2149],{},[182,2215,2149],{},[182,2217,2149],{},[182,2219,2149],{},[168,2221,2222,2224,2227,2229,2231,2233,2235,2237],{},[182,2223,159],{},[182,2225,2226],{},"A (0)",[182,2228,257],{},[182,2230,551],{},[182,2232,2149],{},[182,2234,159],{},[182,2236,2149],{},[182,2238,2149],{},[168,2240,2241,2243,2246,2248,2250,2252,2254,2256],{},[182,2242,521],{},[182,2244,2245],{},"D (1)",[182,2247,257],{},[182,2249,551],{},[182,2251,2149],{},[182,2253,159],{},[182,2255,536],{},[182,2257,2149],{},[168,2259,2260,2262,2265,2267,2269,2271,2273,2275],{},[182,2261,536],{},[182,2263,2264],{},"E (3)",[182,2266,257],{},[182,2268,551],{},[182,2270,2149],{},[182,2272,159],{},[182,2274,536],{},[182,2276,2277],{},"8",[168,2279,2280,2282,2285,2287,2289,2292,2294,2296],{},[182,2281,551],{},[182,2283,2284],{},"B (4)",[182,2286,257],{},[182,2288,551],{},[182,2290,2291],{},"7",[182,2293,159],{},[182,2295,536],{},[182,2297,2277],{},[168,2299,2300,2302,2305,2307,2309,2311,2313,2315],{},[182,2301,565],{},[182,2303,2304],{},"C (7)",[182,2306,257],{},[182,2308,551],{},[182,2310,2291],{},[182,2312,159],{},[182,2314,536],{},[182,2316,2277],{},[168,2318,2319,2321,2324,2326,2328,2330,2332,2334],{},[182,2320,580],{},[182,2322,2323],{},"F (8)",[182,2325,257],{},[182,2327,551],{},[182,2329,2291],{},[182,2331,159],{},[182,2333,536],{},[182,2335,2277],{},[10,2337,2338],{},"Twee momenten om op te letten:",[35,2340,2341,2359],{},[38,2342,2343,2344,2347,2348,2351,2352,2355,2356,2358],{},"In stap 3 levert de route ",[50,2345,2346],{},"A → D → E → B"," afstand ",[50,2349,2350],{},"3 + 1 = 4"," op. Dat is niet ",[41,2353,2354],{},"kleiner"," dan de\nhuidige 4, dus ",[50,2357,192],{}," verandert niet.",[38,2360,2361,2362,2347,2365,2368,2369,2371,2372,2374],{},"In stap 5 levert ",[50,2363,2364],{},"A → B → C → F",[50,2366,2367],{},"7 + 2 = 9"," op, langer dan de 8 via ",[50,2370,109],{},". ",[50,2373,223],{}," blijft 8.",[10,2376,2377,2378,617],{},"Antwoord (alfabetisch): ",[41,2379,2380],{},"A = 0, B = 4, C = 7, D = 1, E = 3, F = 8",[10,2382,2383],{},"Met negatieve gewichten werkt Dijkstra niet, omdat een \"definitieve\" afstand later toch nog korter\nkan worden. Daarvoor gebruik je Bellman-Ford.",[711,2385,2386,3017],{},[714,2387,2388],{"v-slot:python":130},[122,2389,2391],{"className":718,"code":2390,"language":720,"meta":130,"style":130},"import heapq\n\ngewogen = {\n    \"A\": {\"B\": 4, \"D\": 1}, \"B\": {\"A\": 4, \"C\": 3, \"E\": 1},\n    \"C\": {\"B\": 3, \"F\": 2}, \"D\": {\"A\": 1, \"E\": 2},\n    \"E\": {\"B\": 1, \"D\": 2, \"F\": 5}, \"F\": {\"C\": 2, \"E\": 5},\n}\n\n\ndef dijkstra(graaf, start):\n    afstand = {v: float(\"inf\") for v in graaf}\n    afstand[start] = 0\n    klaar = set()\n    heap = [(0, start)]  # (afstand, knoop)\n    while heap:\n        d, u = heapq.heappop(heap)  # knoop met kleinste afstand\n        if u in klaar:\n            continue  # verouderde invoer in de heap\n        klaar.add(u)\n        for v, gewicht in sorted(graaf[u].items()):\n            if d + gewicht \u003C afstand[v]:  # relaxatie\n                afstand[v] = d + gewicht\n                heapq.heappush(heap, (afstand[v], v))\n    return dict(sorted(afstand.items()))\n\n\nprint(dijkstra(gewogen, \"A\"))\n# {'A': 0, 'B': 4, 'C': 7, 'D': 1, 'E': 3, 'F': 8}\n",[50,2392,2393,2400,2404,2413,2500,2571,2654,2658,2662,2666,2683,2721,2739,2750,2772,2781,2810,2823,2831,2846,2878,2905,2925,2957,2980,2984,2988,3012],{"__ignoreMap":130},[724,2394,2395,2397],{"class":726,"line":727},[724,2396,738],{"class":730},[724,2398,2399],{"class":734}," heapq\n",[724,2401,2402],{"class":726,"line":744},[724,2403,748],{"emptyLinePlaceholder":747},[724,2405,2406,2409,2411],{"class":726,"line":751},[724,2407,2408],{"class":734},"gewogen ",[724,2410,758],{"class":757},[724,2412,761],{"class":757},[724,2414,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2436,2438,2440,2442,2444,2446,2449,2452,2454,2456,2458,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2485,2487,2489,2491,2493,2495,2497],{"class":726,"line":764},[724,2416,767],{"class":757},[724,2418,184],{"class":770},[724,2420,773],{"class":757},[724,2422,469],{"class":757},[724,2424,1000],{"class":757},[724,2426,773],{"class":757},[724,2428,192],{"class":770},[724,2430,773],{"class":757},[724,2432,469],{"class":757},[724,2434,2435],{"class":1440}," 4",[724,2437,787],{"class":757},[724,2439,790],{"class":757},[724,2441,208],{"class":770},[724,2443,773],{"class":757},[724,2445,469],{"class":757},[724,2447,2448],{"class":1440}," 1",[724,2450,2451],{"class":757},"},",[724,2453,790],{"class":757},[724,2455,192],{"class":770},[724,2457,773],{"class":757},[724,2459,469],{"class":757},[724,2461,1000],{"class":757},[724,2463,773],{"class":757},[724,2465,184],{"class":770},[724,2467,773],{"class":757},[724,2469,469],{"class":757},[724,2471,2435],{"class":1440},[724,2473,787],{"class":757},[724,2475,790],{"class":757},[724,2477,200],{"class":770},[724,2479,773],{"class":757},[724,2481,469],{"class":757},[724,2483,2484],{"class":1440}," 3",[724,2486,787],{"class":757},[724,2488,790],{"class":757},[724,2490,109],{"class":770},[724,2492,773],{"class":757},[724,2494,469],{"class":757},[724,2496,2448],{"class":1440},[724,2498,2499],{"class":757},"},\n",[724,2501,2502,2504,2506,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569],{"class":726,"line":861},[724,2503,767],{"class":757},[724,2505,200],{"class":770},[724,2507,773],{"class":757},[724,2509,469],{"class":757},[724,2511,1000],{"class":757},[724,2513,773],{"class":757},[724,2515,192],{"class":770},[724,2517,773],{"class":757},[724,2519,469],{"class":757},[724,2521,2484],{"class":1440},[724,2523,787],{"class":757},[724,2525,790],{"class":757},[724,2527,223],{"class":770},[724,2529,773],{"class":757},[724,2531,469],{"class":757},[724,2533,2534],{"class":1440}," 2",[724,2536,2451],{"class":757},[724,2538,790],{"class":757},[724,2540,208],{"class":770},[724,2542,773],{"class":757},[724,2544,469],{"class":757},[724,2546,1000],{"class":757},[724,2548,773],{"class":757},[724,2550,184],{"class":770},[724,2552,773],{"class":757},[724,2554,469],{"class":757},[724,2556,2448],{"class":1440},[724,2558,787],{"class":757},[724,2560,790],{"class":757},[724,2562,109],{"class":770},[724,2564,773],{"class":757},[724,2566,469],{"class":757},[724,2568,2534],{"class":1440},[724,2570,2499],{"class":757},[724,2572,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652],{"class":726,"line":950},[724,2574,767],{"class":757},[724,2576,109],{"class":770},[724,2578,773],{"class":757},[724,2580,469],{"class":757},[724,2582,1000],{"class":757},[724,2584,773],{"class":757},[724,2586,192],{"class":770},[724,2588,773],{"class":757},[724,2590,469],{"class":757},[724,2592,2448],{"class":1440},[724,2594,787],{"class":757},[724,2596,790],{"class":757},[724,2598,208],{"class":770},[724,2600,773],{"class":757},[724,2602,469],{"class":757},[724,2604,2534],{"class":1440},[724,2606,787],{"class":757},[724,2608,790],{"class":757},[724,2610,223],{"class":770},[724,2612,773],{"class":757},[724,2614,469],{"class":757},[724,2616,2617],{"class":1440}," 5",[724,2619,2451],{"class":757},[724,2621,790],{"class":757},[724,2623,223],{"class":770},[724,2625,773],{"class":757},[724,2627,469],{"class":757},[724,2629,1000],{"class":757},[724,2631,773],{"class":757},[724,2633,200],{"class":770},[724,2635,773],{"class":757},[724,2637,469],{"class":757},[724,2639,2534],{"class":1440},[724,2641,787],{"class":757},[724,2643,790],{"class":757},[724,2645,109],{"class":770},[724,2647,773],{"class":757},[724,2649,469],{"class":757},[724,2651,2617],{"class":1440},[724,2653,2499],{"class":757},[724,2655,2656],{"class":726,"line":956},[724,2657,953],{"class":757},[724,2659,2660],{"class":726,"line":961},[724,2661,748],{"emptyLinePlaceholder":747},[724,2663,2664],{"class":726,"line":966},[724,2665,748],{"emptyLinePlaceholder":747},[724,2667,2668,2670,2673,2675,2677,2679,2681],{"class":726,"line":992},[724,2669,970],{"class":969},[724,2671,2672],{"class":973}," dijkstra",[724,2674,977],{"class":757},[724,2676,981],{"class":980},[724,2678,787],{"class":757},[724,2680,986],{"class":980},[724,2682,989],{"class":757},[724,2684,2685,2688,2690,2692,2694,2696,2699,2701,2703,2706,2708,2710,2713,2715,2717,2719],{"class":726,"line":1007},[724,2686,2687],{"class":734},"    afstand ",[724,2689,758],{"class":757},[724,2691,1000],{"class":757},[724,2693,1148],{"class":734},[724,2695,469],{"class":757},[724,2697,2698],{"class":1250}," float",[724,2700,977],{"class":757},[724,2702,773],{"class":757},[724,2704,2705],{"class":770},"inf",[724,2707,773],{"class":757},[724,2709,1151],{"class":757},[724,2711,2712],{"class":730}," for",[724,2714,1091],{"class":734},[724,2716,1094],{"class":730},[724,2718,1502],{"class":734},[724,2720,953],{"class":757},[724,2722,2723,2726,2728,2730,2733,2736],{"class":726,"line":1026},[724,2724,2725],{"class":734},"    afstand",[724,2727,1104],{"class":757},[724,2729,494],{"class":734},[724,2731,2732],{"class":757},"]",[724,2734,2735],{"class":757}," =",[724,2737,2738],{"class":1440}," 0\n",[724,2740,2741,2744,2746,2748],{"class":726,"line":1037},[724,2742,2743],{"class":734},"    klaar ",[724,2745,758],{"class":757},[724,2747,1251],{"class":1250},[724,2749,1064],{"class":757},[724,2751,2752,2755,2757,2760,2762,2764,2766,2769],{"class":726,"line":1049},[724,2753,2754],{"class":734},"    heap ",[724,2756,758],{"class":757},[724,2758,2759],{"class":757}," [(",[724,2761,257],{"class":1440},[724,2763,787],{"class":757},[724,2765,986],{"class":734},[724,2767,2768],{"class":757},")]",[724,2770,2771],{"class":1112},"  # (afstand, knoop)\n",[724,2773,2774,2776,2779],{"class":726,"line":1067},[724,2775,1040],{"class":730},[724,2777,2778],{"class":734}," heap",[724,2780,1046],{"class":757},[724,2782,2783,2786,2788,2790,2792,2795,2797,2800,2802,2805,2807],{"class":726,"line":1085},[724,2784,2785],{"class":734},"        d",[724,2787,787],{"class":757},[724,2789,1637],{"class":734},[724,2791,758],{"class":757},[724,2793,2794],{"class":734}," heapq",[724,2796,617],{"class":757},[724,2798,2799],{"class":973},"heappop",[724,2801,977],{"class":757},[724,2803,2804],{"class":973},"heap",[724,2806,1151],{"class":757},[724,2808,2809],{"class":1112},"  # knoop met kleinste afstand\n",[724,2811,2812,2814,2816,2818,2821],{"class":726,"line":1116},[724,2813,1318],{"class":730},[724,2815,1637],{"class":734},[724,2817,1094],{"class":757},[724,2819,2820],{"class":734}," klaar",[724,2822,1046],{"class":757},[724,2824,2825,2828],{"class":726,"line":1135},[724,2826,2827],{"class":730},"            continue",[724,2829,2830],{"class":1112},"  # verouderde invoer in de heap\n",[724,2832,2833,2836,2838,2840,2842,2844],{"class":726,"line":1157},[724,2834,2835],{"class":734},"        klaar",[724,2837,617],{"class":757},[724,2839,1143],{"class":973},[724,2841,977],{"class":757},[724,2843,415],{"class":973},[724,2845,1082],{"class":757},[724,2847,2848,2850,2852,2854,2857,2859,2861,2863,2865,2867,2869,2872,2875],{"class":726,"line":1173},[724,2849,1088],{"class":730},[724,2851,1343],{"class":734},[724,2853,787],{"class":757},[724,2855,2856],{"class":734}," gewicht ",[724,2858,1094],{"class":730},[724,2860,1097],{"class":973},[724,2862,977],{"class":757},[724,2864,981],{"class":973},[724,2866,1104],{"class":757},[724,2868,415],{"class":973},[724,2870,2871],{"class":757},"].",[724,2873,2874],{"class":973},"items",[724,2876,2877],{"class":757},"()):\n",[724,2879,2880,2882,2885,2888,2890,2892,2895,2897,2899,2902],{"class":726,"line":1182},[724,2881,1119],{"class":730},[724,2883,2884],{"class":734}," d ",[724,2886,2887],{"class":757},"+",[724,2889,2856],{"class":734},[724,2891,1471],{"class":757},[724,2893,2894],{"class":734}," afstand",[724,2896,1104],{"class":757},[724,2898,1148],{"class":734},[724,2900,2901],{"class":757},"]:",[724,2903,2904],{"class":1112},"  # relaxatie\n",[724,2906,2907,2910,2912,2914,2916,2918,2920,2922],{"class":726,"line":1187},[724,2908,2909],{"class":734},"                afstand",[724,2911,1104],{"class":757},[724,2913,1148],{"class":734},[724,2915,2732],{"class":757},[724,2917,2735],{"class":757},[724,2919,2884],{"class":734},[724,2921,2887],{"class":757},[724,2923,2924],{"class":734}," gewicht\n",[724,2926,2927,2930,2932,2935,2937,2939,2941,2943,2946,2948,2950,2952,2954],{"class":726,"line":1192},[724,2928,2929],{"class":734},"                heapq",[724,2931,617],{"class":757},[724,2933,2934],{"class":973},"heappush",[724,2936,977],{"class":757},[724,2938,2804],{"class":973},[724,2940,787],{"class":757},[724,2942,44],{"class":757},[724,2944,2945],{"class":973},"afstand",[724,2947,1104],{"class":757},[724,2949,1148],{"class":973},[724,2951,797],{"class":757},[724,2953,1343],{"class":973},[724,2955,2956],{"class":757},"))\n",[724,2958,2959,2961,2964,2966,2969,2971,2973,2975,2977],{"class":726,"line":1222},[724,2960,1176],{"class":730},[724,2962,2963],{"class":1250}," dict",[724,2965,977],{"class":757},[724,2967,2968],{"class":973},"sorted",[724,2970,977],{"class":757},[724,2972,2945],{"class":973},[724,2974,617],{"class":757},[724,2976,2874],{"class":973},[724,2978,2979],{"class":757},"()))\n",[724,2981,2982],{"class":726,"line":1237},[724,2983,748],{"emptyLinePlaceholder":747},[724,2985,2986],{"class":726,"line":1259},[724,2987,748],{"emptyLinePlaceholder":747},[724,2989,2990,2992,2994,2997,2999,3002,3004,3006,3008,3010],{"class":726,"line":1275},[724,2991,1376],{"class":973},[724,2993,977],{"class":757},[724,2995,2996],{"class":973},"dijkstra",[724,2998,977],{"class":757},[724,3000,3001],{"class":973},"gewogen",[724,3003,787],{"class":757},[724,3005,790],{"class":757},[724,3007,184],{"class":770},[724,3009,773],{"class":757},[724,3011,2956],{"class":757},[724,3013,3014],{"class":726,"line":1291},[724,3015,3016],{"class":1112},"# {'A': 0, 'B': 4, 'C': 7, 'D': 1, 'E': 3, 'F': 8}\n",[714,3018,3019],{"v-slot:java":130},[122,3020,3022],{"className":1431,"code":3021,"language":1433,"meta":130,"style":130},"import java.util.*;\n\nrecord Item(int afstand, String knoop) {}\n\nstatic Map\u003CString, Integer> dijkstra(Map\u003CString, Map\u003CString, Integer>> graaf, String start) {\n    Map\u003CString, Integer> afstand = new TreeMap\u003C>(); \u002F\u002F TreeMap: alfabetische volgorde\n    for (String v : graaf.keySet()) afstand.put(v, Integer.MAX_VALUE);\n    afstand.put(start, 0);\n    Set\u003CString> klaar = new HashSet\u003C>();\n    PriorityQueue\u003CItem> heap = new PriorityQueue\u003C>(\n            Comparator.comparingInt(Item::afstand).thenComparing(Item::knoop));\n    heap.add(new Item(0, start));\n    while (!heap.isEmpty()) {\n        Item it = heap.poll(); \u002F\u002F knoop met kleinste afstand\n        if (!klaar.add(it.knoop())) continue; \u002F\u002F verouderde invoer in de heap\n        for (Map.Entry\u003CString, Integer> kant : new TreeMap\u003C>(graaf.get(it.knoop())).entrySet()) {\n            int nieuw = it.afstand() + kant.getValue();\n            if (nieuw \u003C afstand.get(kant.getKey())) { \u002F\u002F relaxatie\n                afstand.put(kant.getKey(), nieuw);\n                heap.add(new Item(nieuw, kant.getKey()));\n            }\n        }\n    }\n    return afstand;\n}\n",[50,3023,3024,3040,3044,3071,3075,3129,3159,3202,3221,3242,3267,3302,3328,3344,3366,3400,3458,3491,3525,3548,3579,3583,3587,3591,3599],{"__ignoreMap":130},[724,3025,3026,3028,3030,3032,3034,3036,3038],{"class":726,"line":727},[724,3027,738],{"class":1440},[724,3029,1443],{"class":969},[724,3031,617],{"class":757},[724,3033,1448],{"class":969},[724,3035,617],{"class":757},[724,3037,1453],{"class":734},[724,3039,1456],{"class":757},[724,3041,3042],{"class":726,"line":744},[724,3043,748],{"emptyLinePlaceholder":747},[724,3045,3046,3049,3052,3054,3057,3059,3061,3063,3066,3068],{"class":726,"line":751},[724,3047,3048],{"class":969},"record",[724,3050,3051],{"class":1250}," Item",[724,3053,977],{"class":757},[724,3055,3056],{"class":969},"int",[724,3058,2894],{"class":734},[724,3060,787],{"class":757},[724,3062,1507],{"class":969},[724,3064,3065],{"class":734}," knoop",[724,3067,1151],{"class":757},[724,3069,3070],{"class":757}," {}\n",[724,3072,3073],{"class":726,"line":764},[724,3074,748],{"emptyLinePlaceholder":747},[724,3076,3077,3079,3082,3084,3086,3088,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127],{"class":726,"line":861},[724,3078,1465],{"class":969},[724,3080,3081],{"class":969}," Map",[724,3083,1471],{"class":757},[724,3085,1474],{"class":734},[724,3087,787],{"class":757},[724,3089,3090],{"class":734}," Integer",[724,3092,1477],{"class":757},[724,3094,2672],{"class":973},[724,3096,977],{"class":757},[724,3098,1484],{"class":969},[724,3100,1471],{"class":757},[724,3102,1474],{"class":734},[724,3104,787],{"class":757},[724,3106,3081],{"class":969},[724,3108,1471],{"class":757},[724,3110,1474],{"class":734},[724,3112,787],{"class":757},[724,3114,3090],{"class":734},[724,3116,1499],{"class":757},[724,3118,1502],{"class":734},[724,3120,787],{"class":757},[724,3122,1507],{"class":969},[724,3124,986],{"class":734},[724,3126,1151],{"class":757},[724,3128,761],{"class":757},[724,3130,3131,3134,3136,3138,3140,3142,3144,3146,3148,3150,3153,3156],{"class":726,"line":950},[724,3132,3133],{"class":969},"    Map",[724,3135,1471],{"class":757},[724,3137,1474],{"class":969},[724,3139,787],{"class":757},[724,3141,3090],{"class":969},[724,3143,1477],{"class":757},[724,3145,2347],{"class":734},[724,3147,758],{"class":757},[724,3149,1531],{"class":730},[724,3151,3152],{"class":969}," TreeMap",[724,3154,3155],{"class":757},"\u003C>();",[724,3157,3158],{"class":1112}," \u002F\u002F TreeMap: alfabetische volgorde\n",[724,3160,3161,3163,3165,3167,3169,3171,3173,3175,3178,3180,3182,3184,3187,3189,3191,3193,3195,3197,3200],{"class":726,"line":956},[724,3162,1294],{"class":730},[724,3164,44],{"class":757},[724,3166,1474],{"class":969},[724,3168,1091],{"class":734},[724,3170,469],{"class":730},[724,3172,1502],{"class":734},[724,3174,617],{"class":757},[724,3176,3177],{"class":973},"keySet",[724,3179,1627],{"class":757},[724,3181,2894],{"class":734},[724,3183,617],{"class":757},[724,3185,3186],{"class":973},"put",[724,3188,977],{"class":757},[724,3190,1148],{"class":734},[724,3192,787],{"class":757},[724,3194,3090],{"class":734},[724,3196,617],{"class":757},[724,3198,3199],{"class":734},"MAX_VALUE",[724,3201,1664],{"class":757},[724,3203,3204,3206,3208,3210,3212,3214,3216,3219],{"class":726,"line":961},[724,3205,2725],{"class":734},[724,3207,617],{"class":757},[724,3209,3186],{"class":973},[724,3211,977],{"class":757},[724,3213,494],{"class":734},[724,3215,787],{"class":757},[724,3217,3218],{"class":1440}," 0",[724,3220,1664],{"class":757},[724,3222,3223,3225,3227,3229,3231,3234,3236,3238,3240],{"class":726,"line":966},[724,3224,1518],{"class":969},[724,3226,1471],{"class":757},[724,3228,1474],{"class":969},[724,3230,1477],{"class":757},[724,3232,3233],{"class":734}," klaar ",[724,3235,758],{"class":757},[724,3237,1531],{"class":730},[724,3239,1534],{"class":969},[724,3241,1610],{"class":757},[724,3243,3244,3247,3249,3252,3254,3257,3259,3261,3264],{"class":726,"line":992},[724,3245,3246],{"class":969},"    PriorityQueue",[724,3248,1471],{"class":757},[724,3250,3251],{"class":969},"Item",[724,3253,1477],{"class":757},[724,3255,3256],{"class":734}," heap ",[724,3258,758],{"class":757},[724,3260,1531],{"class":730},[724,3262,3263],{"class":969}," PriorityQueue",[724,3265,3266],{"class":757},"\u003C>(\n",[724,3268,3269,3272,3274,3277,3279,3281,3284,3286,3288,3291,3293,3295,3297,3300],{"class":726,"line":1007},[724,3270,3271],{"class":734},"            Comparator",[724,3273,617],{"class":757},[724,3275,3276],{"class":973},"comparingInt",[724,3278,977],{"class":757},[724,3280,3251],{"class":734},[724,3282,3283],{"class":730},"::",[724,3285,2945],{"class":734},[724,3287,100],{"class":757},[724,3289,3290],{"class":973},"thenComparing",[724,3292,977],{"class":757},[724,3294,3251],{"class":734},[724,3296,3283],{"class":730},[724,3298,3299],{"class":734},"knoop",[724,3301,1552],{"class":757},[724,3303,3304,3307,3309,3311,3313,3316,3318,3320,3322,3324,3326],{"class":726,"line":1026},[724,3305,3306],{"class":734},"    heap",[724,3308,617],{"class":757},[724,3310,1143],{"class":973},[724,3312,977],{"class":757},[724,3314,3315],{"class":730},"new",[724,3317,3051],{"class":973},[724,3319,977],{"class":757},[724,3321,257],{"class":1440},[724,3323,787],{"class":757},[724,3325,986],{"class":734},[724,3327,1552],{"class":757},[724,3329,3330,3332,3334,3336,3338,3340,3342],{"class":726,"line":1037},[724,3331,1040],{"class":730},[724,3333,1617],{"class":757},[724,3335,2804],{"class":734},[724,3337,617],{"class":757},[724,3339,1624],{"class":973},[724,3341,1627],{"class":757},[724,3343,761],{"class":757},[724,3345,3346,3349,3352,3354,3356,3358,3360,3363],{"class":726,"line":1049},[724,3347,3348],{"class":969},"        Item",[724,3350,3351],{"class":734}," it ",[724,3353,758],{"class":757},[724,3355,2778],{"class":734},[724,3357,617],{"class":757},[724,3359,1646],{"class":973},[724,3361,3362],{"class":757},"();",[724,3364,3365],{"class":1112}," \u002F\u002F knoop met kleinste afstand\n",[724,3367,3368,3370,3372,3375,3377,3379,3381,3384,3386,3388,3391,3394,3397],{"class":726,"line":1067},[724,3369,1318],{"class":730},[724,3371,1617],{"class":757},[724,3373,3374],{"class":734},"klaar",[724,3376,617],{"class":757},[724,3378,1143],{"class":973},[724,3380,977],{"class":757},[724,3382,3383],{"class":734},"it",[724,3385,617],{"class":757},[724,3387,3299],{"class":973},[724,3389,3390],{"class":757},"()))",[724,3392,3393],{"class":730}," continue",[724,3395,3396],{"class":757},";",[724,3398,3399],{"class":1112}," \u002F\u002F verouderde invoer in de heap\n",[724,3401,3402,3404,3406,3408,3410,3413,3415,3417,3419,3421,3423,3426,3428,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448,3451,3454,3456],{"class":726,"line":1085},[724,3403,1088],{"class":730},[724,3405,44],{"class":757},[724,3407,1484],{"class":969},[724,3409,617],{"class":757},[724,3411,3412],{"class":969},"Entry",[724,3414,1471],{"class":757},[724,3416,1474],{"class":969},[724,3418,787],{"class":757},[724,3420,3090],{"class":969},[724,3422,1477],{"class":757},[724,3424,3425],{"class":734}," kant ",[724,3427,469],{"class":730},[724,3429,1531],{"class":730},[724,3431,3152],{"class":969},[724,3433,1537],{"class":757},[724,3435,981],{"class":734},[724,3437,617],{"class":757},[724,3439,1693],{"class":973},[724,3441,977],{"class":757},[724,3443,3383],{"class":734},[724,3445,617],{"class":757},[724,3447,3299],{"class":973},[724,3449,3450],{"class":757},"())).",[724,3452,3453],{"class":973},"entrySet",[724,3455,1627],{"class":757},[724,3457,761],{"class":757},[724,3459,3460,3463,3466,3468,3471,3473,3475,3478,3481,3484,3486,3489],{"class":726,"line":1116},[724,3461,3462],{"class":969},"            int",[724,3464,3465],{"class":734}," nieuw ",[724,3467,758],{"class":757},[724,3469,3470],{"class":734}," it",[724,3472,617],{"class":757},[724,3474,2945],{"class":973},[724,3476,3477],{"class":757},"()",[724,3479,3480],{"class":757}," +",[724,3482,3483],{"class":734}," kant",[724,3485,617],{"class":757},[724,3487,3488],{"class":973},"getValue",[724,3490,1649],{"class":757},[724,3492,3493,3495,3497,3500,3502,3504,3506,3508,3510,3513,3515,3518,3520,3522],{"class":726,"line":1135},[724,3494,1119],{"class":730},[724,3496,44],{"class":757},[724,3498,3499],{"class":734},"nieuw ",[724,3501,1471],{"class":757},[724,3503,2894],{"class":734},[724,3505,617],{"class":757},[724,3507,1693],{"class":973},[724,3509,977],{"class":757},[724,3511,3512],{"class":734},"kant",[724,3514,617],{"class":757},[724,3516,3517],{"class":973},"getKey",[724,3519,3390],{"class":757},[724,3521,1000],{"class":757},[724,3523,3524],{"class":1112}," \u002F\u002F relaxatie\n",[724,3526,3527,3529,3531,3533,3535,3537,3539,3541,3543,3546],{"class":726,"line":1157},[724,3528,2909],{"class":734},[724,3530,617],{"class":757},[724,3532,3186],{"class":973},[724,3534,977],{"class":757},[724,3536,3512],{"class":734},[724,3538,617],{"class":757},[724,3540,3517],{"class":973},[724,3542,1254],{"class":757},[724,3544,3545],{"class":734}," nieuw",[724,3547,1664],{"class":757},[724,3549,3550,3553,3555,3557,3559,3561,3563,3565,3568,3570,3572,3574,3576],{"class":726,"line":1173},[724,3551,3552],{"class":734},"                heap",[724,3554,617],{"class":757},[724,3556,1143],{"class":973},[724,3558,977],{"class":757},[724,3560,3315],{"class":730},[724,3562,3051],{"class":973},[724,3564,977],{"class":757},[724,3566,3567],{"class":734},"nieuw",[724,3569,787],{"class":757},[724,3571,3483],{"class":734},[724,3573,617],{"class":757},[724,3575,3517],{"class":973},[724,3577,3578],{"class":757},"()));\n",[724,3580,3581],{"class":726,"line":1182},[724,3582,1782],{"class":757},[724,3584,3585],{"class":726,"line":1187},[724,3586,1787],{"class":757},[724,3588,3589],{"class":726,"line":1192},[724,3590,1792],{"class":757},[724,3592,3593,3595,3597],{"class":726,"line":1222},[724,3594,1176],{"class":730},[724,3596,2894],{"class":734},[724,3598,1456],{"class":757},[724,3600,3601],{"class":726,"line":1237},[724,3602,953],{"class":757},[30,3604,3606],{"id":3605},"topologisch-sorteren-met-kahn","Topologisch sorteren met Kahn",[10,3608,3609,3610,3613,3614,3617,3618,3621,3622,3625,3626,3628,3629,3631],{},"Een topologische sortering (",[14,3611,3612],{},"topological sort",") van een gerichte graaf zonder cycli (",[14,3615,3616],{},"DAG",", ",[14,3619,3620],{},"directed\nacyclic graph",") is een volgorde waarin elke kant ",[50,3623,3624],{},"u → v"," van links naar rechts wijst: ",[50,3627,415],{}," komt vóór\n",[50,3630,1148],{},". Denk aan vakken met voorkennis of build-stappen die van elkaar afhangen.",[10,3633,3634],{},"Het algoritme van Kahn werkt met ingangsgraden:",[3636,3637,3638,3641,3647,3650],"ol",{},[38,3639,3640],{},"Tel voor elke knoop de ingangsgraad (aantal inkomende kanten).",[38,3642,3643,3644,617],{},"Kies een knoop met ingangsgraad 0; zijn er meerdere, neem de ",[41,3645,3646],{},"alfabetisch kleinste",[38,3648,3649],{},"Zet hem in het resultaat en verlaag de ingangsgraad van elk van zijn opvolgers met 1.",[38,3651,3652],{},"Herhaal tot er geen knopen met ingangsgraad 0 meer zijn.",[10,3654,3655],{},"Voorbeeld met zes vakken en deze voorkennis-kanten:",[122,3657,3660],{"className":3658,"code":3659,"language":127},[125],"C → A    C → D    B → D    A → E    D → E    E → F\n",[50,3661,3659],{"__ignoreMap":130},[10,3663,3664],{},"Ingangsgraden bij de start: A = 1, B = 0, C = 0, D = 2, E = 2, F = 1.",[162,3666,3667,3682],{},[165,3668,3669],{},[168,3670,3671,3673,3676,3679],{},[171,3672,478],{},[171,3674,3675],{},"Kandidaten (ingangsgraad 0)",[171,3677,3678],{},"Kies",[171,3680,3681],{},"Gevolg",[177,3683,3684,3696,3707,3719,3730,3741],{},[168,3685,3686,3688,3691,3693],{},[182,3687,159],{},[182,3689,3690],{},"B, C",[182,3692,192],{},[182,3694,3695],{},"D: 2 → 1",[168,3697,3698,3700,3702,3704],{},[182,3699,521],{},[182,3701,200],{},[182,3703,200],{},[182,3705,3706],{},"A: 1 → 0, D: 1 → 0",[168,3708,3709,3711,3714,3716],{},[182,3710,536],{},[182,3712,3713],{},"A, D",[182,3715,184],{},[182,3717,3718],{},"E: 2 → 1",[168,3720,3721,3723,3725,3727],{},[182,3722,551],{},[182,3724,208],{},[182,3726,208],{},[182,3728,3729],{},"E: 1 → 0",[168,3731,3732,3734,3736,3738],{},[182,3733,565],{},[182,3735,109],{},[182,3737,109],{},[182,3739,3740],{},"F: 1 → 0",[168,3742,3743,3745,3747,3749],{},[182,3744,580],{},[182,3746,223],{},[182,3748,223],{},[182,3750],{},[10,3752,3753,3754,3757,3758,3760],{},"Topologische volgorde: ",[41,3755,3756],{},"B, C, A, D, E, F",". Bevat de graaf een cyclus, dan komen de knopen in die\ncyclus nooit op ingangsgraad 0 en is het resultaat korter dan ",[50,3759,105],{},". Zo detecteert Kahn meteen cycli.",[711,3762,3763,4250],{},[714,3764,3765],{"v-slot:python":130},[122,3766,3768],{"className":718,"code":3767,"language":720,"meta":130,"style":130},"import heapq\n\nvoorkennis = {\n    \"A\": [\"E\"], \"B\": [\"D\"], \"C\": [\"A\", \"D\"],\n    \"D\": [\"E\"], \"E\": [\"F\"], \"F\": [],\n}\n\n\ndef kahn(graaf):\n    ingang = {v: 0 for v in graaf}\n    for u in graaf:\n        for v in graaf[u]:\n            ingang[v] += 1\n    klaar = [v for v in graaf if ingang[v] == 0]\n    heapq.heapify(klaar)  # min-heap: alfabetisch kleinste eerst\n    volgorde = []\n    while klaar:\n        u = heapq.heappop(klaar)\n        volgorde.append(u)\n        for v in graaf[u]:\n            ingang[v] -= 1\n            if ingang[v] == 0:\n                heapq.heappush(klaar, v)\n    if len(volgorde) \u003C len(graaf):\n        raise ValueError(\"graaf bevat een cyclus\")\n    return volgorde\n\n\nprint(kahn(voorkennis))  # ['B', 'C', 'A', 'D', 'E', 'F']\n",[50,3769,3770,3776,3780,3789,3853,3902,3906,3910,3914,3927,3952,3964,3981,3998,4039,4058,4066,4074,4092,4106,4122,4137,4155,4173,4198,4217,4223,4227,4231],{"__ignoreMap":130},[724,3771,3772,3774],{"class":726,"line":727},[724,3773,738],{"class":730},[724,3775,2399],{"class":734},[724,3777,3778],{"class":726,"line":744},[724,3779,748],{"emptyLinePlaceholder":747},[724,3781,3782,3785,3787],{"class":726,"line":751},[724,3783,3784],{"class":734},"voorkennis ",[724,3786,758],{"class":757},[724,3788,761],{"class":757},[724,3790,3791,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851],{"class":726,"line":764},[724,3792,767],{"class":757},[724,3794,184],{"class":770},[724,3796,773],{"class":757},[724,3798,469],{"class":757},[724,3800,778],{"class":757},[724,3802,773],{"class":757},[724,3804,109],{"class":770},[724,3806,773],{"class":757},[724,3808,797],{"class":757},[724,3810,790],{"class":757},[724,3812,192],{"class":770},[724,3814,773],{"class":757},[724,3816,469],{"class":757},[724,3818,778],{"class":757},[724,3820,773],{"class":757},[724,3822,208],{"class":770},[724,3824,773],{"class":757},[724,3826,797],{"class":757},[724,3828,790],{"class":757},[724,3830,200],{"class":770},[724,3832,773],{"class":757},[724,3834,469],{"class":757},[724,3836,778],{"class":757},[724,3838,773],{"class":757},[724,3840,184],{"class":770},[724,3842,773],{"class":757},[724,3844,787],{"class":757},[724,3846,790],{"class":757},[724,3848,208],{"class":770},[724,3850,773],{"class":757},[724,3852,858],{"class":757},[724,3854,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899],{"class":726,"line":861},[724,3856,767],{"class":757},[724,3858,208],{"class":770},[724,3860,773],{"class":757},[724,3862,469],{"class":757},[724,3864,778],{"class":757},[724,3866,773],{"class":757},[724,3868,109],{"class":770},[724,3870,773],{"class":757},[724,3872,797],{"class":757},[724,3874,790],{"class":757},[724,3876,109],{"class":770},[724,3878,773],{"class":757},[724,3880,469],{"class":757},[724,3882,778],{"class":757},[724,3884,773],{"class":757},[724,3886,223],{"class":770},[724,3888,773],{"class":757},[724,3890,797],{"class":757},[724,3892,790],{"class":757},[724,3894,223],{"class":770},[724,3896,773],{"class":757},[724,3898,469],{"class":757},[724,3900,3901],{"class":757}," [],\n",[724,3903,3904],{"class":726,"line":950},[724,3905,953],{"class":757},[724,3907,3908],{"class":726,"line":956},[724,3909,748],{"emptyLinePlaceholder":747},[724,3911,3912],{"class":726,"line":961},[724,3913,748],{"emptyLinePlaceholder":747},[724,3915,3916,3918,3921,3923,3925],{"class":726,"line":966},[724,3917,970],{"class":969},[724,3919,3920],{"class":973}," kahn",[724,3922,977],{"class":757},[724,3924,981],{"class":980},[724,3926,989],{"class":757},[724,3928,3929,3932,3934,3936,3938,3940,3942,3944,3946,3948,3950],{"class":726,"line":992},[724,3930,3931],{"class":734},"    ingang ",[724,3933,758],{"class":757},[724,3935,1000],{"class":757},[724,3937,1148],{"class":734},[724,3939,469],{"class":757},[724,3941,3218],{"class":1440},[724,3943,2712],{"class":730},[724,3945,1091],{"class":734},[724,3947,1094],{"class":730},[724,3949,1502],{"class":734},[724,3951,953],{"class":757},[724,3953,3954,3956,3958,3960,3962],{"class":726,"line":1007},[724,3955,1294],{"class":730},[724,3957,1637],{"class":734},[724,3959,1094],{"class":730},[724,3961,1502],{"class":734},[724,3963,1046],{"class":757},[724,3965,3966,3968,3970,3972,3974,3976,3978],{"class":726,"line":1026},[724,3967,1088],{"class":730},[724,3969,1091],{"class":734},[724,3971,1094],{"class":730},[724,3973,1502],{"class":734},[724,3975,1104],{"class":757},[724,3977,415],{"class":734},[724,3979,3980],{"class":757},"]:\n",[724,3982,3983,3986,3988,3990,3992,3995],{"class":726,"line":1037},[724,3984,3985],{"class":734},"            ingang",[724,3987,1104],{"class":757},[724,3989,1148],{"class":734},[724,3991,2732],{"class":757},[724,3993,3994],{"class":757}," +=",[724,3996,3997],{"class":1440}," 1\n",[724,3999,4000,4002,4004,4006,4009,4012,4014,4016,4019,4022,4025,4027,4029,4031,4034,4036],{"class":726,"line":1049},[724,4001,2743],{"class":734},[724,4003,758],{"class":757},[724,4005,778],{"class":757},[724,4007,4008],{"class":734},"v ",[724,4010,4011],{"class":730},"for",[724,4013,1091],{"class":734},[724,4015,1094],{"class":730},[724,4017,4018],{"class":734}," graaf ",[724,4020,4021],{"class":730},"if",[724,4023,4024],{"class":734}," ingang",[724,4026,1104],{"class":757},[724,4028,1148],{"class":734},[724,4030,2732],{"class":757},[724,4032,4033],{"class":757}," ==",[724,4035,3218],{"class":1440},[724,4037,4038],{"class":757},"]\n",[724,4040,4041,4044,4046,4049,4051,4053,4055],{"class":726,"line":1067},[724,4042,4043],{"class":734},"    heapq",[724,4045,617],{"class":757},[724,4047,4048],{"class":973},"heapify",[724,4050,977],{"class":757},[724,4052,3374],{"class":973},[724,4054,1151],{"class":757},[724,4056,4057],{"class":1112},"  # min-heap: alfabetisch kleinste eerst\n",[724,4059,4060,4062,4064],{"class":726,"line":1085},[724,4061,1029],{"class":734},[724,4063,758],{"class":757},[724,4065,1034],{"class":757},[724,4067,4068,4070,4072],{"class":726,"line":1116},[724,4069,1040],{"class":730},[724,4071,2820],{"class":734},[724,4073,1046],{"class":757},[724,4075,4076,4078,4080,4082,4084,4086,4088,4090],{"class":726,"line":1135},[724,4077,1052],{"class":734},[724,4079,758],{"class":757},[724,4081,2794],{"class":734},[724,4083,617],{"class":757},[724,4085,2799],{"class":973},[724,4087,977],{"class":757},[724,4089,3374],{"class":973},[724,4091,1082],{"class":757},[724,4093,4094,4096,4098,4100,4102,4104],{"class":726,"line":1157},[724,4095,1070],{"class":734},[724,4097,617],{"class":757},[724,4099,1075],{"class":973},[724,4101,977],{"class":757},[724,4103,415],{"class":973},[724,4105,1082],{"class":757},[724,4107,4108,4110,4112,4114,4116,4118,4120],{"class":726,"line":1173},[724,4109,1088],{"class":730},[724,4111,1091],{"class":734},[724,4113,1094],{"class":730},[724,4115,1502],{"class":734},[724,4117,1104],{"class":757},[724,4119,415],{"class":734},[724,4121,3980],{"class":757},[724,4123,4124,4126,4128,4130,4132,4135],{"class":726,"line":1182},[724,4125,3985],{"class":734},[724,4127,1104],{"class":757},[724,4129,1148],{"class":734},[724,4131,2732],{"class":757},[724,4133,4134],{"class":757}," -=",[724,4136,3997],{"class":1440},[724,4138,4139,4141,4143,4145,4147,4149,4151,4153],{"class":726,"line":1187},[724,4140,1119],{"class":730},[724,4142,4024],{"class":734},[724,4144,1104],{"class":757},[724,4146,1148],{"class":734},[724,4148,2732],{"class":757},[724,4150,4033],{"class":757},[724,4152,3218],{"class":1440},[724,4154,1046],{"class":757},[724,4156,4157,4159,4161,4163,4165,4167,4169,4171],{"class":726,"line":1192},[724,4158,2929],{"class":734},[724,4160,617],{"class":757},[724,4162,2934],{"class":973},[724,4164,977],{"class":757},[724,4166,3374],{"class":973},[724,4168,787],{"class":757},[724,4170,1343],{"class":973},[724,4172,1082],{"class":757},[724,4174,4175,4177,4180,4182,4185,4187,4190,4192,4194,4196],{"class":726,"line":1222},[724,4176,1225],{"class":730},[724,4178,4179],{"class":973}," len",[724,4181,977],{"class":757},[724,4183,4184],{"class":973},"volgorde",[724,4186,1151],{"class":757},[724,4188,4189],{"class":757}," \u003C",[724,4191,4179],{"class":973},[724,4193,977],{"class":757},[724,4195,981],{"class":973},[724,4197,989],{"class":757},[724,4199,4200,4203,4206,4208,4210,4213,4215],{"class":726,"line":1237},[724,4201,4202],{"class":730},"        raise",[724,4204,4205],{"class":1250}," ValueError",[724,4207,977],{"class":757},[724,4209,773],{"class":757},[724,4211,4212],{"class":770},"graaf bevat een cyclus",[724,4214,773],{"class":757},[724,4216,1082],{"class":757},[724,4218,4219,4221],{"class":726,"line":1259},[724,4220,1176],{"class":730},[724,4222,1179],{"class":734},[724,4224,4225],{"class":726,"line":1275},[724,4226,748],{"emptyLinePlaceholder":747},[724,4228,4229],{"class":726,"line":1291},[724,4230,748],{"emptyLinePlaceholder":747},[724,4232,4233,4235,4237,4240,4242,4245,4247],{"class":726,"line":1315},[724,4234,1376],{"class":973},[724,4236,977],{"class":757},[724,4238,4239],{"class":973},"kahn",[724,4241,977],{"class":757},[724,4243,4244],{"class":973},"voorkennis",[724,4246,1396],{"class":757},[724,4248,4249],{"class":1112},"  # ['B', 'C', 'A', 'D', 'E', 'F']\n",[714,4251,4252],{"v-slot:java":130},[122,4253,4255],{"className":1431,"code":4254,"language":1433,"meta":130,"style":130},"import java.util.*;\n\nstatic List\u003CString> kahn(Map\u003CString, List\u003CString>> graaf) {\n    Map\u003CString, Integer> ingang = new HashMap\u003C>();\n    for (String v : graaf.keySet()) ingang.put(v, 0);\n    for (List\u003CString> opvolgers : graaf.values()) {\n        for (String v : opvolgers) ingang.merge(v, 1, Integer::sum);\n    }\n    PriorityQueue\u003CString> klaar = new PriorityQueue\u003C>(); \u002F\u002F alfabetisch kleinste eerst\n    for (String v : graaf.keySet()) if (ingang.get(v) == 0) klaar.add(v);\n    List\u003CString> volgorde = new ArrayList\u003C>();\n    while (!klaar.isEmpty()) {\n        String u = klaar.poll();\n        volgorde.add(u);\n        for (String v : graaf.get(u)) {\n            if (ingang.merge(v, -1, Integer::sum) == 0) klaar.add(v);\n        }\n    }\n    if (volgorde.size() \u003C graaf.size()) throw new IllegalStateException(\"graaf bevat een cyclus\");\n    return volgorde;\n}\n",[50,4256,4257,4273,4277,4315,4341,4377,4407,4450,4454,4477,4533,4553,4569,4585,4599,4625,4676,4680,4684,4727,4735],{"__ignoreMap":130},[724,4258,4259,4261,4263,4265,4267,4269,4271],{"class":726,"line":727},[724,4260,738],{"class":1440},[724,4262,1443],{"class":969},[724,4264,617],{"class":757},[724,4266,1448],{"class":969},[724,4268,617],{"class":757},[724,4270,1453],{"class":734},[724,4272,1456],{"class":757},[724,4274,4275],{"class":726,"line":744},[724,4276,748],{"emptyLinePlaceholder":747},[724,4278,4279,4281,4283,4285,4287,4289,4291,4293,4295,4297,4299,4301,4303,4305,4307,4309,4311,4313],{"class":726,"line":751},[724,4280,1465],{"class":969},[724,4282,1468],{"class":969},[724,4284,1471],{"class":757},[724,4286,1474],{"class":734},[724,4288,1477],{"class":757},[724,4290,3920],{"class":973},[724,4292,977],{"class":757},[724,4294,1484],{"class":969},[724,4296,1471],{"class":757},[724,4298,1474],{"class":734},[724,4300,787],{"class":757},[724,4302,1468],{"class":969},[724,4304,1471],{"class":757},[724,4306,1474],{"class":734},[724,4308,1499],{"class":757},[724,4310,1502],{"class":734},[724,4312,1151],{"class":757},[724,4314,761],{"class":757},[724,4316,4317,4319,4321,4323,4325,4327,4329,4332,4334,4336,4339],{"class":726,"line":764},[724,4318,3133],{"class":969},[724,4320,1471],{"class":757},[724,4322,1474],{"class":969},[724,4324,787],{"class":757},[724,4326,3090],{"class":969},[724,4328,1477],{"class":757},[724,4330,4331],{"class":734}," ingang ",[724,4333,758],{"class":757},[724,4335,1531],{"class":730},[724,4337,4338],{"class":969}," HashMap",[724,4340,1610],{"class":757},[724,4342,4343,4345,4347,4349,4351,4353,4355,4357,4359,4361,4363,4365,4367,4369,4371,4373,4375],{"class":726,"line":861},[724,4344,1294],{"class":730},[724,4346,44],{"class":757},[724,4348,1474],{"class":969},[724,4350,1091],{"class":734},[724,4352,469],{"class":730},[724,4354,1502],{"class":734},[724,4356,617],{"class":757},[724,4358,3177],{"class":973},[724,4360,1627],{"class":757},[724,4362,4024],{"class":734},[724,4364,617],{"class":757},[724,4366,3186],{"class":973},[724,4368,977],{"class":757},[724,4370,1148],{"class":734},[724,4372,787],{"class":757},[724,4374,3218],{"class":1440},[724,4376,1664],{"class":757},[724,4378,4379,4381,4383,4385,4387,4389,4391,4394,4396,4398,4400,4403,4405],{"class":726,"line":950},[724,4380,1294],{"class":730},[724,4382,44],{"class":757},[724,4384,1540],{"class":969},[724,4386,1471],{"class":757},[724,4388,1474],{"class":969},[724,4390,1477],{"class":757},[724,4392,4393],{"class":734}," opvolgers ",[724,4395,469],{"class":730},[724,4397,1502],{"class":734},[724,4399,617],{"class":757},[724,4401,4402],{"class":973},"values",[724,4404,1627],{"class":757},[724,4406,761],{"class":757},[724,4408,4409,4411,4413,4415,4417,4419,4422,4424,4426,4428,4431,4433,4435,4437,4439,4441,4443,4445,4448],{"class":726,"line":956},[724,4410,1088],{"class":730},[724,4412,44],{"class":757},[724,4414,1474],{"class":969},[724,4416,1091],{"class":734},[724,4418,469],{"class":730},[724,4420,4421],{"class":734}," opvolgers",[724,4423,1151],{"class":757},[724,4425,4024],{"class":734},[724,4427,617],{"class":757},[724,4429,4430],{"class":973},"merge",[724,4432,977],{"class":757},[724,4434,1148],{"class":734},[724,4436,787],{"class":757},[724,4438,2448],{"class":1440},[724,4440,787],{"class":757},[724,4442,3090],{"class":734},[724,4444,3283],{"class":730},[724,4446,4447],{"class":734},"sum",[724,4449,1664],{"class":757},[724,4451,4452],{"class":726,"line":961},[724,4453,1792],{"class":757},[724,4455,4456,4458,4460,4462,4464,4466,4468,4470,4472,4474],{"class":726,"line":966},[724,4457,3246],{"class":969},[724,4459,1471],{"class":757},[724,4461,1474],{"class":969},[724,4463,1477],{"class":757},[724,4465,3233],{"class":734},[724,4467,758],{"class":757},[724,4469,1531],{"class":730},[724,4471,3263],{"class":969},[724,4473,3155],{"class":757},[724,4475,4476],{"class":1112}," \u002F\u002F alfabetisch kleinste eerst\n",[724,4478,4479,4481,4483,4485,4487,4489,4491,4493,4495,4497,4500,4502,4505,4507,4509,4511,4513,4515,4517,4519,4521,4523,4525,4527,4529,4531],{"class":726,"line":992},[724,4480,1294],{"class":730},[724,4482,44],{"class":757},[724,4484,1474],{"class":969},[724,4486,1091],{"class":734},[724,4488,469],{"class":730},[724,4490,1502],{"class":734},[724,4492,617],{"class":757},[724,4494,3177],{"class":973},[724,4496,1627],{"class":757},[724,4498,4499],{"class":730}," if",[724,4501,44],{"class":757},[724,4503,4504],{"class":734},"ingang",[724,4506,617],{"class":757},[724,4508,1693],{"class":973},[724,4510,977],{"class":757},[724,4512,1148],{"class":734},[724,4514,1151],{"class":757},[724,4516,4033],{"class":757},[724,4518,3218],{"class":1440},[724,4520,1151],{"class":757},[724,4522,2820],{"class":734},[724,4524,617],{"class":757},[724,4526,1143],{"class":973},[724,4528,977],{"class":757},[724,4530,1148],{"class":734},[724,4532,1664],{"class":757},[724,4534,4535,4537,4539,4541,4543,4545,4547,4549,4551],{"class":726,"line":1007},[724,4536,1592],{"class":969},[724,4538,1471],{"class":757},[724,4540,1474],{"class":969},[724,4542,1477],{"class":757},[724,4544,1245],{"class":734},[724,4546,758],{"class":757},[724,4548,1531],{"class":730},[724,4550,1607],{"class":969},[724,4552,1610],{"class":757},[724,4554,4555,4557,4559,4561,4563,4565,4567],{"class":726,"line":1026},[724,4556,1040],{"class":730},[724,4558,1617],{"class":757},[724,4560,3374],{"class":734},[724,4562,617],{"class":757},[724,4564,1624],{"class":973},[724,4566,1627],{"class":757},[724,4568,761],{"class":757},[724,4570,4571,4573,4575,4577,4579,4581,4583],{"class":726,"line":1037},[724,4572,1634],{"class":969},[724,4574,1637],{"class":734},[724,4576,758],{"class":757},[724,4578,2820],{"class":734},[724,4580,617],{"class":757},[724,4582,1646],{"class":973},[724,4584,1649],{"class":757},[724,4586,4587,4589,4591,4593,4595,4597],{"class":726,"line":1049},[724,4588,1070],{"class":734},[724,4590,617],{"class":757},[724,4592,1143],{"class":973},[724,4594,977],{"class":757},[724,4596,415],{"class":734},[724,4598,1664],{"class":757},[724,4600,4601,4603,4605,4607,4609,4611,4613,4615,4617,4619,4621,4623],{"class":726,"line":1067},[724,4602,1088],{"class":730},[724,4604,44],{"class":757},[724,4606,1474],{"class":969},[724,4608,1091],{"class":734},[724,4610,469],{"class":730},[724,4612,1502],{"class":734},[724,4614,617],{"class":757},[724,4616,1693],{"class":973},[724,4618,977],{"class":757},[724,4620,415],{"class":734},[724,4622,1396],{"class":757},[724,4624,761],{"class":757},[724,4626,4627,4629,4631,4633,4635,4637,4639,4641,4643,4646,4648,4650,4652,4654,4656,4658,4660,4662,4664,4666,4668,4670,4672,4674],{"class":726,"line":1085},[724,4628,1119],{"class":730},[724,4630,44],{"class":757},[724,4632,4504],{"class":734},[724,4634,617],{"class":757},[724,4636,4430],{"class":973},[724,4638,977],{"class":757},[724,4640,1148],{"class":734},[724,4642,787],{"class":757},[724,4644,4645],{"class":757}," -",[724,4647,159],{"class":1440},[724,4649,787],{"class":757},[724,4651,3090],{"class":734},[724,4653,3283],{"class":730},[724,4655,4447],{"class":734},[724,4657,1151],{"class":757},[724,4659,4033],{"class":757},[724,4661,3218],{"class":1440},[724,4663,1151],{"class":757},[724,4665,2820],{"class":734},[724,4667,617],{"class":757},[724,4669,1143],{"class":973},[724,4671,977],{"class":757},[724,4673,1148],{"class":734},[724,4675,1664],{"class":757},[724,4677,4678],{"class":726,"line":1116},[724,4679,1787],{"class":757},[724,4681,4682],{"class":726,"line":1135},[724,4683,1792],{"class":757},[724,4685,4686,4688,4690,4692,4694,4697,4699,4701,4703,4705,4707,4709,4712,4714,4717,4719,4721,4723,4725],{"class":726,"line":1157},[724,4687,1225],{"class":730},[724,4689,44],{"class":757},[724,4691,4184],{"class":734},[724,4693,617],{"class":757},[724,4695,4696],{"class":973},"size",[724,4698,3477],{"class":757},[724,4700,4189],{"class":757},[724,4702,1502],{"class":734},[724,4704,617],{"class":757},[724,4706,4696],{"class":973},[724,4708,1627],{"class":757},[724,4710,4711],{"class":730}," throw",[724,4713,1531],{"class":730},[724,4715,4716],{"class":973}," IllegalStateException",[724,4718,977],{"class":757},[724,4720,773],{"class":757},[724,4722,4212],{"class":770},[724,4724,773],{"class":757},[724,4726,1664],{"class":757},[724,4728,4729,4731,4733],{"class":726,"line":1173},[724,4730,1176],{"class":730},[724,4732,1216],{"class":734},[724,4734,1456],{"class":757},[724,4736,4737],{"class":726,"line":1182},[724,4738,953],{"class":757},[30,4740,4742],{"id":4741},"complexiteit","Complexiteit",[162,4744,4745,4761],{},[165,4746,4747],{},[168,4748,4749,4752,4755,4758],{},[171,4750,4751],{},"Algoritme",[171,4753,4754],{},"Tijd (adjacency list)",[171,4756,4757],{},"Tijd (matrix)",[171,4759,4760],{},"Extra geheugen",[177,4762,4763,4780,4797,4814,4831],{},[168,4764,4765,4768,4772,4776],{},[182,4766,4767],{},"BFS",[182,4769,4770],{},[50,4771,383],{},[182,4773,4774],{},[50,4775,388],{},[182,4777,4778],{},[50,4779,424],{},[168,4781,4782,4785,4789,4793],{},[182,4783,4784],{},"DFS",[182,4786,4787],{},[50,4788,383],{},[182,4790,4791],{},[50,4792,388],{},[182,4794,4795],{},[50,4796,424],{},[168,4798,4799,4802,4807,4810],{},[182,4800,4801],{},"Dijkstra met binaire heap",[182,4803,4804],{},[50,4805,4806],{},"O((V + E) log V)",[182,4808,4809],{},"—",[182,4811,4812],{},[50,4813,383],{},[168,4815,4816,4819,4823,4827],{},[182,4817,4818],{},"Dijkstra met array, zonder heap",[182,4820,4821],{},[50,4822,388],{},[182,4824,4825],{},[50,4826,388],{},[182,4828,4829],{},[50,4830,424],{},[168,4832,4833,4836,4840,4844],{},[182,4834,4835],{},"Kahn",[182,4837,4838],{},[50,4839,383],{},[182,4841,4842],{},[50,4843,388],{},[182,4845,4846],{},[50,4847,424],{},[10,4849,4850,4851,4854,4855,4858,4859,4863,4864,4867,4868,4870,4871,617],{},"BFS en DFS bekijken elke knoop één keer en elke kant (bij een ongerichte graaf) twee keer, vandaar\n",[50,4852,4853],{},"V + E",". Dijkstra doet daarbovenop heap-operaties van ",[50,4856,4857],{},"O(log V)","; zie ",[455,4860,4862],{"href":4861},"\u002Fpracticely\u002Fdsa\u002Fheaps","heaps",".\nKahn met de alfabetische keuze via een heap kost ",[50,4865,4866],{},"O(V log V + E)","; zonder die eis volstaat een gewone\nwachtrij en is het ",[50,4869,383],{},". Meer over deze notatie lees je bij ",[455,4872,4741],{"href":4873},"\u002Fpracticely\u002Fdsa\u002Fcomplexiteit",[30,4875,4877],{"id":4876},"veelgemaakte-fouten-op-het-tentamen","Veelgemaakte fouten op het tentamen",[3636,4879,4880,4892,4898,4914,4924],{},[38,4881,4882,4885,4886,4888,4889,4891],{},[41,4883,4884],{},"Buren niet alfabetisch bekijken."," Bij ",[50,4887,192],{}," zijn de buren ",[50,4890,195],{},", in die volgorde. Neem je\nze in de volgorde waarin de kanten in de opgave staan, dan krijg je een ander antwoord.",[38,4893,4894,4897],{},[41,4895,4896],{},"BFS: een knoop pas markeren als hij uit de wachtrij komt."," Dan kan hij er twee keer in komen.\nMarkeer hem als bezocht zodra hij erin gaat.",[38,4899,4900,4903,4904,4906,4907,148,4909,4911,4912,617],{},[41,4901,4902],{},"DFS als BFS uitvoeren."," Bij DFS ga je na ",[50,4905,192],{}," meteen door naar de eerste onbezochte buur van ",[50,4908,192],{},[50,4910,200],{},"), niet eerst terug naar de andere buren van ",[50,4913,184],{},[38,4915,4916,4919,4920,4923],{},[41,4917,4918],{},"Dijkstra: een afgeronde knoop opnieuw aanpassen of bij gelijke afstand overschrijven."," Een\nafstand verandert alleen als de nieuwe route ",[41,4921,4922],{},"strikt"," korter is.",[38,4925,4926,4929],{},[41,4927,4928],{},"Kahn: de ingangsgraden niet bijwerken."," Verlaag na elke keuze de ingangsgraad van alle\nopvolgers; pas dan zie je welke knopen nieuw beschikbaar zijn.",[30,4931,4933],{"id":4932},"samenvatting","Samenvatting",[35,4935,4936,4942,4948,4954],{},[38,4937,4938,4939,4941],{},"Een graaf bestaat uit knopen en kanten, gericht of ongericht, gewogen of niet; meestal sla je hem op\nals adjacency list (",[50,4940,383],{}," geheugen).",[38,4943,4944,4945,4947],{},"BFS gebruikt een wachtrij en verkent laag voor laag; DFS gaat recursief zo diep mogelijk. Beide\n",[50,4946,383],{},", buren altijd alfabetisch.",[38,4949,4950,4951,4953],{},"Dijkstra kiest steeds de knoop met de kleinste voorlopige afstand en werkt alleen met\nniet-negatieve gewichten: ",[50,4952,4806],{}," met een heap.",[38,4955,4956],{},"Kahn sorteert een DAG topologisch door steeds een knoop met ingangsgraad 0 te kiezen (bij ons de\nalfabetisch kleinste) en detecteert zo ook cycli.",[4958,4959,4960],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":130,"searchDepth":744,"depth":744,"links":4962},[4963,4964,4965,4966,4967,4968,4969,4970,4971],{"id":32,"depth":744,"text":33},{"id":133,"depth":744,"text":134},{"id":445,"depth":744,"text":446},{"id":605,"depth":744,"text":606},{"id":2132,"depth":744,"text":2133},{"id":3605,"depth":744,"text":3606},{"id":4741,"depth":744,"text":4742},{"id":4876,"depth":744,"text":4877},{"id":4932,"depth":744,"text":4933},"Leer grafen representeren met adjacency lists en matrices, en traceer BFS, DFS, Dijkstra en het algoritme van Kahn stap voor stap, met code in Python en Java.","md","i-lucide-waypoints",{},"\u002Fpracticely-dsa\u002Fgrafen",{"title":5,"description":4972},"practicely-dsa\u002Fgrafen","grafen","J0aQBdQbYkvKjbrR1zl45Lv4_kltmHb8pUgHLstrMbU",{"prev":4982,"next":8254},{"id":4983,"title":4984,"body":4985,"description":8246,"extension":4973,"icon":8247,"meta":8248,"navigation":747,"order":956,"path":8249,"seo":8250,"stem":8251,"topic":8252,"__hash__":8253},"practicelyDsa\u002Fpracticely-dsa\u002Fbinaire-zoekbomen.md","Binaire zoekbomen uitgelegd: invoegen, verwijderen en de vier doorloopvolgordes",{"type":7,"value":4986,"toc":8232},[4987,4999,5006,5010,5017,5036,5039,5043,5049,5056,5166,5169,5175,5178,5182,5185,5222,5233,5237,5240,5252,5269,5275,5294,5319,5325,5328,5332,5339,5406,5418,5451,5454,7923,7927,7941,7980,7986,7993,7998,8005,8025,8045,8047,8127,8138,8140,8202,8204,8229],[10,4988,4989,4990,4993,4994,4998],{},"Een binaire zoekboom (",[14,4991,4992],{},"binary search tree",", BST) combineert het beste van een gesorteerde array en een\ngelinkte lijst. Je kunt erin zoeken zoals bij ",[455,4995,4997],{"href":4996},"\u002Fpracticely\u002Fdsa\u002Fzoeken","binair zoeken",", maar invoegen en\nverwijderen gaan zonder alles op te schuiven.",[10,5000,5001,5002,5005],{},"Op het tentamen is dit een vaste kluif: \"voeg deze sleutels in, teken de boom\", \"verwijder 3\",\n\"geef de inorder-volgorde\". In sollicitaties zijn boomvragen populair omdat ze recursief denken\ntesten. En in de praktijk zitten gebalanceerde zoekbomen achter ",[50,5003,5004],{},"TreeMap"," in Java, database-indexen\nen de bestandssystemen op je laptop.",[30,5007,5009],{"id":5008},"de-bst-eigenschap","De BST-eigenschap",[10,5011,5012,5013,5016],{},"Elke knoop heeft een sleutel en hoogstens twee kinderen. Voor ",[41,5014,5015],{},"elke"," knoop geldt:",[35,5018,5019,5028],{},[38,5020,5021,5022,5025,5026,3396],{},"alle sleutels in de ",[41,5023,5024],{},"linker"," deelboom zijn ",[41,5027,2354],{},[38,5029,5021,5030,5025,5033,617],{},[41,5031,5032],{},"rechter",[41,5034,5035],{},"groter",[10,5037,5038],{},"Dat geldt dus voor de hele deelboom, niet alleen voor de directe kinderen. In de opgaven komen geen\ndubbele sleutels voor.",[30,5040,5042],{"id":5041},"invoegen","Invoegen",[10,5044,5045,5046,617],{},"Begin bij de wortel. Is de nieuwe sleutel kleiner, ga naar links; groter, ga naar rechts. Kom je bij\neen lege plek, dan hang je de nieuwe knoop daar op. Een nieuwe sleutel wordt dus ",[41,5047,5048],{},"altijd een blad",[10,5050,5051,5052,5055],{},"We voegen ",[50,5053,5054],{},"8, 3, 10, 1, 6, 14, 4, 7, 13"," in deze volgorde in:",[162,5057,5058,5071],{},[165,5059,5060],{},[168,5061,5062,5065,5068],{},[171,5063,5064],{},"Sleutel",[171,5066,5067],{},"Route",[171,5069,5070],{},"Wordt",[177,5072,5073,5083,5093,5104,5114,5124,5135,5145,5155],{},[168,5074,5075,5077,5080],{},[182,5076,2277],{},[182,5078,5079],{},"lege boom",[182,5081,5082],{},"wortel",[168,5084,5085,5087,5090],{},[182,5086,536],{},[182,5088,5089],{},"8 → links",[182,5091,5092],{},"linkerkind van 8",[168,5094,5095,5098,5101],{},[182,5096,5097],{},"10",[182,5099,5100],{},"8 → rechts",[182,5102,5103],{},"rechterkind van 8",[168,5105,5106,5108,5111],{},[182,5107,159],{},[182,5109,5110],{},"8 → links, 3 → links",[182,5112,5113],{},"linkerkind van 3",[168,5115,5116,5118,5121],{},[182,5117,580],{},[182,5119,5120],{},"8 → links, 3 → rechts",[182,5122,5123],{},"rechterkind van 3",[168,5125,5126,5129,5132],{},[182,5127,5128],{},"14",[182,5130,5131],{},"8 → rechts, 10 → rechts",[182,5133,5134],{},"rechterkind van 10",[168,5136,5137,5139,5142],{},[182,5138,551],{},[182,5140,5141],{},"8 → links, 3 → rechts, 6 → links",[182,5143,5144],{},"linkerkind van 6",[168,5146,5147,5149,5152],{},[182,5148,2291],{},[182,5150,5151],{},"8 → links, 3 → rechts, 6 → rechts",[182,5153,5154],{},"rechterkind van 6",[168,5156,5157,5160,5163],{},[182,5158,5159],{},"13",[182,5161,5162],{},"8 → rechts, 10 → rechts, 14 → links",[182,5164,5165],{},"linkerkind van 14",[10,5167,5168],{},"Het resultaat, de voorbeeldboom voor de rest van deze pagina:",[122,5170,5173],{"className":5171,"code":5172,"language":127},[125],"            8\n          \u002F   \\\n         3     10\n        \u002F \\      \\\n       1   6      14\n          \u002F \\    \u002F\n         4   7  13\n",[50,5174,5172],{"__ignoreMap":130},[10,5176,5177],{},"De invoegvolgorde bepaalt de vorm. Dezelfde sleutels in een andere volgorde geven een andere boom.",[30,5179,5181],{"id":5180},"zoeken","Zoeken",[10,5183,5184],{},"Zoeken volgt dezelfde route als invoegen. Bij elke knoop vergelijk je en ga je links of rechts.",[162,5186,5187,5200],{},[165,5188,5189],{},[168,5190,5191,5194,5197],{},[171,5192,5193],{},"Zoek",[171,5195,5196],{},"Bezochte knopen",[171,5198,5199],{},"Resultaat",[177,5201,5202,5212],{},[168,5203,5204,5206,5209],{},[182,5205,2291],{},[182,5207,5208],{},"8, 3, 6, 7",[182,5210,5211],{},"gevonden",[168,5213,5214,5216,5219],{},[182,5215,565],{},[182,5217,5218],{},"8, 3, 6, 4",[182,5220,5221],{},"4 heeft geen rechterkind: niet gevonden",[10,5223,5224,5225,5228,5229,5232],{},"Je bezoekt hoogstens één knoop per niveau. Het aantal stappen is dus de ",[41,5226,5227],{},"hoogte"," ",[50,5230,5231],{},"h"," van de boom.",[30,5234,5236],{"id":5235},"verwijderen-drie-gevallen","Verwijderen: drie gevallen",[10,5238,5239],{},"Zoek eerst de knoop. Wat je daarna doet, hangt af van het aantal kinderen.",[10,5241,5242,5245,5246,5248,5249,5251],{},[41,5243,5244],{},"Geval 1: blad (geen kinderen)."," Haal de knoop gewoon weg. Verwijder ",[50,5247,5159],{},": het linkerkind van ",[50,5250,5128],{},"\nwordt leeg, de rest van de boom blijft hetzelfde.",[10,5253,5254,5257,5258,5260,5261,5263,5264,5266,5267,617],{},[41,5255,5256],{},"Geval 2: één kind."," Het kind schuift op naar de plek van de knoop. Verwijder ",[50,5259,5097],{},": de deelboom\n",[50,5262,5128],{}," (met ",[50,5265,5159],{},") wordt het rechterkind van ",[50,5268,2277],{},[122,5270,5273],{"className":5271,"code":5272,"language":127},[125],"            8\n          \u002F   \\\n         3     14\n        \u002F \\    \u002F\n       1   6  13\n          \u002F \\\n         4   7\n",[50,5274,5272],{"__ignoreMap":130},[10,5276,5277,5280,5281,44,5284,5287,5288,5290,5291,5293],{},[41,5278,5279],{},"Geval 3: twee kinderen."," Zoek de ",[41,5282,5283],{},"opvolger",[14,5285,5286],{},"in-order successor","): de ",[41,5289,2153],{}," sleutel in de\n",[41,5292,5032],{}," deelboom. Die vind je door één keer naar rechts te gaan en dan zo ver mogelijk naar links.\nKopieer de sleutel van de opvolger naar de knoop en verwijder daarna de opvolger uit de rechter\ndeelboom. De opvolger heeft nooit een linkerkind, dus dat is altijd geval 1 of 2.",[10,5295,5296,5297,5299,5300,5302,5303,5306,5307,5309,5310,5312,5313,5315,5316,5318],{},"Verwijder ",[50,5298,536],{}," uit de oorspronkelijke boom. De rechter deelboom van ",[50,5301,536],{}," is ",[50,5304,5305],{},"6, 4, 7","; de kleinste\ndaarin is ",[50,5308,551],{},". Dus ",[50,5311,551],{}," komt op de plek van ",[50,5314,536],{},", en het blad ",[50,5317,551],{}," verdwijnt:",[122,5320,5323],{"className":5321,"code":5322,"language":127},[125],"            8\n          \u002F   \\\n         4     10\n        \u002F \\      \\\n       1   6      14\n            \\    \u002F\n             7  13\n",[50,5324,5322],{"__ignoreMap":130},[10,5326,5327],{},"Waarom werkt dit? De opvolger is groter dan alles links en kleiner dan alles wat rechts overblijft,\ndus de BST-eigenschap blijft intact.",[30,5329,5331],{"id":5330},"de-vier-doorloopvolgordes","De vier doorloopvolgordes",[10,5333,5334,5335,5338],{},"Een boom doorlopen (",[14,5336,5337],{},"traversal",") betekent elke knoop één keer bezoeken. Voor de voorbeeldboom:",[162,5340,5341,5353],{},[165,5342,5343],{},[168,5344,5345,5348,5351],{},[171,5346,5347],{},"Volgorde",[171,5349,5350],{},"Regel",[171,5352,5199],{},[177,5354,5355,5368,5381,5394],{},[168,5356,5357,5360,5363],{},[182,5358,5359],{},"Preorder",[182,5361,5362],{},"knoop, links, rechts",[182,5364,5365],{},[50,5366,5367],{},"8, 3, 1, 6, 4, 7, 10, 14, 13",[168,5369,5370,5373,5376],{},[182,5371,5372],{},"Inorder",[182,5374,5375],{},"links, knoop, rechts",[182,5377,5378],{},[50,5379,5380],{},"1, 3, 4, 6, 7, 8, 10, 13, 14",[168,5382,5383,5386,5389],{},[182,5384,5385],{},"Postorder",[182,5387,5388],{},"links, rechts, knoop",[182,5390,5391],{},[50,5392,5393],{},"1, 4, 7, 6, 3, 13, 14, 10, 8",[168,5395,5396,5399,5402],{},[182,5397,5398],{},"Level-order",[182,5400,5401],{},"per niveau, van links naar rechts",[182,5403,5404],{},[50,5405,5054],{},[10,5407,5408,5409,3617,5411,5413,5414,5417],{},"Ezelsbruggetje: ",[14,5410,122],{},[14,5412,1094],{}," en ",[14,5415,5416],{},"post"," zeggen wanneer de knoop zelf aan de beurt is: vóór, tussen of\nna zijn deelbomen.",[35,5419,5420,5429,5434,5439],{},[38,5421,5422,5424,5425,5428],{},[41,5423,5372],{}," geeft bij een BST altijd de ",[41,5426,5427],{},"gesorteerde"," volgorde. Handige controle voor je\nantwoord.",[38,5430,5431,5433],{},[41,5432,5359],{}," is handig om een boom te kopiëren of op te slaan: voeg je de preorder-volgorde\nopnieuw in, dan krijg je exact dezelfde boom terug.",[38,5435,5436,5438],{},[41,5437,5385],{}," verwerkt kinderen vóór de ouder, bijvoorbeeld bij het opruimen van een boom of het\nuitrekenen van een expressieboom.",[38,5440,5441,5443,5444,5447,5448,100],{},[41,5442,5398],{}," is breedte-eerst zoeken en gebruikt een wachtrij, net als BFS bij\n",[455,5445,4979],{"href":5446},"\u002Fpracticely\u002Fdsa\u002Fgrafen"," (zie ook ",[455,5449,5450],{"href":457},"stapels en wachtrijen",[30,5452,5453],{"id":50},"Code",[711,5455,5456,6617],{},[714,5457,5458],{"v-slot:python":130},[122,5459,5461],{"className":718,"code":5460,"language":720,"meta":130,"style":130},"from collections import deque\n\n\nclass Knoop:\n    def __init__(self, sleutel):\n        self.sleutel = sleutel\n        self.links = None\n        self.rechts = None\n\n\ndef voeg_toe(knoop, sleutel):\n    if knoop is None:\n        return Knoop(sleutel)  # nieuwe sleutel wordt een blad\n    if sleutel \u003C knoop.sleutel:\n        knoop.links = voeg_toe(knoop.links, sleutel)\n    elif sleutel > knoop.sleutel:\n        knoop.rechts = voeg_toe(knoop.rechts, sleutel)\n    return knoop\n\n\ndef zoek(knoop, sleutel):\n    while knoop is not None and knoop.sleutel != sleutel:\n        knoop = knoop.links if sleutel \u003C knoop.sleutel else knoop.rechts\n    return knoop\n\n\ndef verwijder(knoop, sleutel):\n    if knoop is None:\n        return None\n    if sleutel \u003C knoop.sleutel:\n        knoop.links = verwijder(knoop.links, sleutel)\n    elif sleutel > knoop.sleutel:\n        knoop.rechts = verwijder(knoop.rechts, sleutel)\n    else:\n        if knoop.links is None:  # blad of alleen rechterkind\n            return knoop.rechts\n        if knoop.rechts is None:  # alleen linkerkind\n            return knoop.links\n        opvolger = knoop.rechts  # twee kinderen: kleinste in rechter deelboom\n        while opvolger.links is not None:\n            opvolger = opvolger.links\n        knoop.sleutel = opvolger.sleutel\n        knoop.rechts = verwijder(knoop.rechts, opvolger.sleutel)\n    return knoop\n\n\ndef preorder(k):\n    return [] if k is None else [k.sleutel] + preorder(k.links) + preorder(k.rechts)\n\n\ndef inorder(k):\n    return [] if k is None else inorder(k.links) + [k.sleutel] + inorder(k.rechts)\n\n\ndef postorder(k):\n    return [] if k is None else postorder(k.links) + postorder(k.rechts) + [k.sleutel]\n\n\ndef level_order(wortel):\n    resultaat, wachtrij = [], deque([wortel] if wortel else [])\n    while wachtrij:\n        k = wachtrij.popleft()\n        resultaat.append(k.sleutel)\n        for kind in (k.links, k.rechts):\n            if kind is not None:\n                wachtrij.append(kind)\n    return resultaat\n\n\nwortel = None\nfor s in [8, 3, 10, 1, 6, 14, 4, 7, 13]:\n    wortel = voeg_toe(wortel, s)\nprint(inorder(wortel))  # [1, 3, 4, 6, 7, 8, 10, 13, 14]\n",[50,5462,5463,5473,5477,5481,5491,5512,5528,5542,5555,5559,5563,5580,5591,5607,5624,5651,5668,5694,5701,5705,5709,5726,5756,5791,5797,5801,5805,5822,5832,5838,5854,5880,5896,5922,5929,5948,5959,5977,5989,6006,6025,6039,6057,6088,6095,6100,6105,6120,6177,6182,6187,6201,6256,6261,6266,6280,6335,6340,6345,6359,6393,6402,6418,6438,6467,6480,6496,6504,6509,6514,6524,6577,6598],{"__ignoreMap":130},[724,5464,5465,5467,5469,5471],{"class":726,"line":727},[724,5466,731],{"class":730},[724,5468,735],{"class":734},[724,5470,738],{"class":730},[724,5472,741],{"class":734},[724,5474,5475],{"class":726,"line":744},[724,5476,748],{"emptyLinePlaceholder":747},[724,5478,5479],{"class":726,"line":751},[724,5480,748],{"emptyLinePlaceholder":747},[724,5482,5483,5486,5489],{"class":726,"line":764},[724,5484,5485],{"class":969},"class",[724,5487,5488],{"class":1250}," Knoop",[724,5490,1046],{"class":757},[724,5492,5493,5496,5499,5501,5505,5507,5510],{"class":726,"line":861},[724,5494,5495],{"class":969},"    def",[724,5497,5498],{"class":973}," __init__",[724,5500,977],{"class":757},[724,5502,5504],{"class":5503},"s5tWE","self",[724,5506,787],{"class":757},[724,5508,5509],{"class":980}," sleutel",[724,5511,989],{"class":757},[724,5513,5514,5517,5519,5523,5525],{"class":726,"line":950},[724,5515,5516],{"class":734},"        self",[724,5518,617],{"class":757},[724,5520,5522],{"class":5521},"swJcz","sleutel",[724,5524,2735],{"class":757},[724,5526,5527],{"class":734}," sleutel\n",[724,5529,5530,5532,5534,5537,5539],{"class":726,"line":956},[724,5531,5516],{"class":734},[724,5533,617],{"class":757},[724,5535,5536],{"class":5521},"links",[724,5538,2735],{"class":757},[724,5540,5541],{"class":757}," None\n",[724,5543,5544,5546,5548,5551,5553],{"class":726,"line":961},[724,5545,5516],{"class":734},[724,5547,617],{"class":757},[724,5549,5550],{"class":5521},"rechts",[724,5552,2735],{"class":757},[724,5554,5541],{"class":757},[724,5556,5557],{"class":726,"line":966},[724,5558,748],{"emptyLinePlaceholder":747},[724,5560,5561],{"class":726,"line":992},[724,5562,748],{"emptyLinePlaceholder":747},[724,5564,5565,5567,5570,5572,5574,5576,5578],{"class":726,"line":1007},[724,5566,970],{"class":969},[724,5568,5569],{"class":973}," voeg_toe",[724,5571,977],{"class":757},[724,5573,3299],{"class":980},[724,5575,787],{"class":757},[724,5577,5509],{"class":980},[724,5579,989],{"class":757},[724,5581,5582,5584,5587,5589],{"class":726,"line":1026},[724,5583,1225],{"class":730},[724,5585,5586],{"class":734}," knoop ",[724,5588,1231],{"class":757},[724,5590,1234],{"class":757},[724,5592,5593,5596,5598,5600,5602,5604],{"class":726,"line":1037},[724,5594,5595],{"class":730},"        return",[724,5597,5488],{"class":973},[724,5599,977],{"class":757},[724,5601,5522],{"class":973},[724,5603,1151],{"class":757},[724,5605,5606],{"class":1112},"  # nieuwe sleutel wordt een blad\n",[724,5608,5609,5611,5614,5616,5618,5620,5622],{"class":726,"line":1049},[724,5610,1225],{"class":730},[724,5612,5613],{"class":734}," sleutel ",[724,5615,1471],{"class":757},[724,5617,3065],{"class":734},[724,5619,617],{"class":757},[724,5621,5522],{"class":5521},[724,5623,1046],{"class":757},[724,5625,5626,5629,5631,5633,5635,5637,5639,5641,5643,5645,5647,5649],{"class":726,"line":1067},[724,5627,5628],{"class":734},"        knoop",[724,5630,617],{"class":757},[724,5632,5536],{"class":5521},[724,5634,2735],{"class":757},[724,5636,5569],{"class":973},[724,5638,977],{"class":757},[724,5640,3299],{"class":973},[724,5642,617],{"class":757},[724,5644,5536],{"class":5521},[724,5646,787],{"class":757},[724,5648,5509],{"class":973},[724,5650,1082],{"class":757},[724,5652,5653,5656,5658,5660,5662,5664,5666],{"class":726,"line":1085},[724,5654,5655],{"class":730},"    elif",[724,5657,5613],{"class":734},[724,5659,1477],{"class":757},[724,5661,3065],{"class":734},[724,5663,617],{"class":757},[724,5665,5522],{"class":5521},[724,5667,1046],{"class":757},[724,5669,5670,5672,5674,5676,5678,5680,5682,5684,5686,5688,5690,5692],{"class":726,"line":1116},[724,5671,5628],{"class":734},[724,5673,617],{"class":757},[724,5675,5550],{"class":5521},[724,5677,2735],{"class":757},[724,5679,5569],{"class":973},[724,5681,977],{"class":757},[724,5683,3299],{"class":973},[724,5685,617],{"class":757},[724,5687,5550],{"class":5521},[724,5689,787],{"class":757},[724,5691,5509],{"class":973},[724,5693,1082],{"class":757},[724,5695,5696,5698],{"class":726,"line":1135},[724,5697,1176],{"class":730},[724,5699,5700],{"class":734}," knoop\n",[724,5702,5703],{"class":726,"line":1157},[724,5704,748],{"emptyLinePlaceholder":747},[724,5706,5707],{"class":726,"line":1173},[724,5708,748],{"emptyLinePlaceholder":747},[724,5710,5711,5713,5716,5718,5720,5722,5724],{"class":726,"line":1182},[724,5712,970],{"class":969},[724,5714,5715],{"class":973}," zoek",[724,5717,977],{"class":757},[724,5719,3299],{"class":980},[724,5721,787],{"class":757},[724,5723,5509],{"class":980},[724,5725,989],{"class":757},[724,5727,5728,5730,5732,5734,5737,5740,5743,5745,5747,5749,5752,5754],{"class":726,"line":1187},[724,5729,1040],{"class":730},[724,5731,5586],{"class":734},[724,5733,1231],{"class":757},[724,5735,5736],{"class":757}," not",[724,5738,5739],{"class":757}," None",[724,5741,5742],{"class":757}," and",[724,5744,3065],{"class":734},[724,5746,617],{"class":757},[724,5748,5522],{"class":5521},[724,5750,5751],{"class":757}," !=",[724,5753,5509],{"class":734},[724,5755,1046],{"class":757},[724,5757,5758,5761,5763,5765,5767,5769,5771,5773,5775,5777,5779,5781,5784,5786,5788],{"class":726,"line":1192},[724,5759,5760],{"class":734},"        knoop ",[724,5762,758],{"class":757},[724,5764,3065],{"class":734},[724,5766,617],{"class":757},[724,5768,5536],{"class":5521},[724,5770,4499],{"class":730},[724,5772,5613],{"class":734},[724,5774,1471],{"class":757},[724,5776,3065],{"class":734},[724,5778,617],{"class":757},[724,5780,5522],{"class":5521},[724,5782,5783],{"class":730}," else",[724,5785,3065],{"class":734},[724,5787,617],{"class":757},[724,5789,5790],{"class":5521},"rechts\n",[724,5792,5793,5795],{"class":726,"line":1222},[724,5794,1176],{"class":730},[724,5796,5700],{"class":734},[724,5798,5799],{"class":726,"line":1237},[724,5800,748],{"emptyLinePlaceholder":747},[724,5802,5803],{"class":726,"line":1259},[724,5804,748],{"emptyLinePlaceholder":747},[724,5806,5807,5809,5812,5814,5816,5818,5820],{"class":726,"line":1275},[724,5808,970],{"class":969},[724,5810,5811],{"class":973}," verwijder",[724,5813,977],{"class":757},[724,5815,3299],{"class":980},[724,5817,787],{"class":757},[724,5819,5509],{"class":980},[724,5821,989],{"class":757},[724,5823,5824,5826,5828,5830],{"class":726,"line":1291},[724,5825,1225],{"class":730},[724,5827,5586],{"class":734},[724,5829,1231],{"class":757},[724,5831,1234],{"class":757},[724,5833,5834,5836],{"class":726,"line":1315},[724,5835,5595],{"class":730},[724,5837,5541],{"class":757},[724,5839,5840,5842,5844,5846,5848,5850,5852],{"class":726,"line":1331},[724,5841,1225],{"class":730},[724,5843,5613],{"class":734},[724,5845,1471],{"class":757},[724,5847,3065],{"class":734},[724,5849,617],{"class":757},[724,5851,5522],{"class":5521},[724,5853,1046],{"class":757},[724,5855,5856,5858,5860,5862,5864,5866,5868,5870,5872,5874,5876,5878],{"class":726,"line":1356},[724,5857,5628],{"class":734},[724,5859,617],{"class":757},[724,5861,5536],{"class":5521},[724,5863,2735],{"class":757},[724,5865,5811],{"class":973},[724,5867,977],{"class":757},[724,5869,3299],{"class":973},[724,5871,617],{"class":757},[724,5873,5536],{"class":5521},[724,5875,787],{"class":757},[724,5877,5509],{"class":973},[724,5879,1082],{"class":757},[724,5881,5882,5884,5886,5888,5890,5892,5894],{"class":726,"line":1363},[724,5883,5655],{"class":730},[724,5885,5613],{"class":734},[724,5887,1477],{"class":757},[724,5889,3065],{"class":734},[724,5891,617],{"class":757},[724,5893,5522],{"class":5521},[724,5895,1046],{"class":757},[724,5897,5898,5900,5902,5904,5906,5908,5910,5912,5914,5916,5918,5920],{"class":726,"line":1368},[724,5899,5628],{"class":734},[724,5901,617],{"class":757},[724,5903,5550],{"class":5521},[724,5905,2735],{"class":757},[724,5907,5811],{"class":973},[724,5909,977],{"class":757},[724,5911,3299],{"class":973},[724,5913,617],{"class":757},[724,5915,5550],{"class":5521},[724,5917,787],{"class":757},[724,5919,5509],{"class":973},[724,5921,1082],{"class":757},[724,5923,5924,5927],{"class":726,"line":1373},[724,5925,5926],{"class":730},"    else",[724,5928,1046],{"class":757},[724,5930,5931,5933,5935,5937,5939,5942,5945],{"class":726,"line":1402},[724,5932,1318],{"class":730},[724,5934,3065],{"class":734},[724,5936,617],{"class":757},[724,5938,5536],{"class":5521},[724,5940,5941],{"class":757}," is",[724,5943,5944],{"class":757}," None:",[724,5946,5947],{"class":1112},"  # blad of alleen rechterkind\n",[724,5949,5950,5953,5955,5957],{"class":726,"line":2127},[724,5951,5952],{"class":730},"            return",[724,5954,3065],{"class":734},[724,5956,617],{"class":757},[724,5958,5790],{"class":5521},[724,5960,5962,5964,5966,5968,5970,5972,5974],{"class":726,"line":5961},37,[724,5963,1318],{"class":730},[724,5965,3065],{"class":734},[724,5967,617],{"class":757},[724,5969,5550],{"class":5521},[724,5971,5941],{"class":757},[724,5973,5944],{"class":757},[724,5975,5976],{"class":1112},"  # alleen linkerkind\n",[724,5978,5980,5982,5984,5986],{"class":726,"line":5979},38,[724,5981,5952],{"class":730},[724,5983,3065],{"class":734},[724,5985,617],{"class":757},[724,5987,5988],{"class":5521},"links\n",[724,5990,5992,5995,5997,5999,6001,6003],{"class":726,"line":5991},39,[724,5993,5994],{"class":734},"        opvolger ",[724,5996,758],{"class":757},[724,5998,3065],{"class":734},[724,6000,617],{"class":757},[724,6002,5550],{"class":5521},[724,6004,6005],{"class":1112},"  # twee kinderen: kleinste in rechter deelboom\n",[724,6007,6009,6012,6015,6017,6019,6021,6023],{"class":726,"line":6008},40,[724,6010,6011],{"class":730},"        while",[724,6013,6014],{"class":734}," opvolger",[724,6016,617],{"class":757},[724,6018,5536],{"class":5521},[724,6020,5941],{"class":757},[724,6022,5736],{"class":757},[724,6024,1234],{"class":757},[724,6026,6028,6031,6033,6035,6037],{"class":726,"line":6027},41,[724,6029,6030],{"class":734},"            opvolger ",[724,6032,758],{"class":757},[724,6034,6014],{"class":734},[724,6036,617],{"class":757},[724,6038,5988],{"class":5521},[724,6040,6042,6044,6046,6048,6050,6052,6054],{"class":726,"line":6041},42,[724,6043,5628],{"class":734},[724,6045,617],{"class":757},[724,6047,5522],{"class":5521},[724,6049,2735],{"class":757},[724,6051,6014],{"class":734},[724,6053,617],{"class":757},[724,6055,6056],{"class":5521},"sleutel\n",[724,6058,6060,6062,6064,6066,6068,6070,6072,6074,6076,6078,6080,6082,6084,6086],{"class":726,"line":6059},43,[724,6061,5628],{"class":734},[724,6063,617],{"class":757},[724,6065,5550],{"class":5521},[724,6067,2735],{"class":757},[724,6069,5811],{"class":973},[724,6071,977],{"class":757},[724,6073,3299],{"class":973},[724,6075,617],{"class":757},[724,6077,5550],{"class":5521},[724,6079,787],{"class":757},[724,6081,6014],{"class":973},[724,6083,617],{"class":757},[724,6085,5522],{"class":5521},[724,6087,1082],{"class":757},[724,6089,6091,6093],{"class":726,"line":6090},44,[724,6092,1176],{"class":730},[724,6094,5700],{"class":734},[724,6096,6098],{"class":726,"line":6097},45,[724,6099,748],{"emptyLinePlaceholder":747},[724,6101,6103],{"class":726,"line":6102},46,[724,6104,748],{"emptyLinePlaceholder":747},[724,6106,6108,6110,6113,6115,6118],{"class":726,"line":6107},47,[724,6109,970],{"class":969},[724,6111,6112],{"class":973}," preorder",[724,6114,977],{"class":757},[724,6116,6117],{"class":980},"k",[724,6119,989],{"class":757},[724,6121,6123,6125,6128,6130,6133,6135,6137,6139,6141,6143,6145,6147,6149,6151,6153,6155,6157,6159,6161,6163,6165,6167,6169,6171,6173,6175],{"class":726,"line":6122},48,[724,6124,1176],{"class":730},[724,6126,6127],{"class":757}," []",[724,6129,4499],{"class":730},[724,6131,6132],{"class":734}," k ",[724,6134,1231],{"class":757},[724,6136,5739],{"class":757},[724,6138,5783],{"class":730},[724,6140,778],{"class":757},[724,6142,6117],{"class":734},[724,6144,617],{"class":757},[724,6146,5522],{"class":5521},[724,6148,2732],{"class":757},[724,6150,3480],{"class":757},[724,6152,6112],{"class":973},[724,6154,977],{"class":757},[724,6156,6117],{"class":973},[724,6158,617],{"class":757},[724,6160,5536],{"class":5521},[724,6162,1151],{"class":757},[724,6164,3480],{"class":757},[724,6166,6112],{"class":973},[724,6168,977],{"class":757},[724,6170,6117],{"class":973},[724,6172,617],{"class":757},[724,6174,5550],{"class":5521},[724,6176,1082],{"class":757},[724,6178,6180],{"class":726,"line":6179},49,[724,6181,748],{"emptyLinePlaceholder":747},[724,6183,6185],{"class":726,"line":6184},50,[724,6186,748],{"emptyLinePlaceholder":747},[724,6188,6190,6192,6195,6197,6199],{"class":726,"line":6189},51,[724,6191,970],{"class":969},[724,6193,6194],{"class":973}," inorder",[724,6196,977],{"class":757},[724,6198,6117],{"class":980},[724,6200,989],{"class":757},[724,6202,6204,6206,6208,6210,6212,6214,6216,6218,6220,6222,6224,6226,6228,6230,6232,6234,6236,6238,6240,6242,6244,6246,6248,6250,6252,6254],{"class":726,"line":6203},52,[724,6205,1176],{"class":730},[724,6207,6127],{"class":757},[724,6209,4499],{"class":730},[724,6211,6132],{"class":734},[724,6213,1231],{"class":757},[724,6215,5739],{"class":757},[724,6217,5783],{"class":730},[724,6219,6194],{"class":973},[724,6221,977],{"class":757},[724,6223,6117],{"class":973},[724,6225,617],{"class":757},[724,6227,5536],{"class":5521},[724,6229,1151],{"class":757},[724,6231,3480],{"class":757},[724,6233,778],{"class":757},[724,6235,6117],{"class":734},[724,6237,617],{"class":757},[724,6239,5522],{"class":5521},[724,6241,2732],{"class":757},[724,6243,3480],{"class":757},[724,6245,6194],{"class":973},[724,6247,977],{"class":757},[724,6249,6117],{"class":973},[724,6251,617],{"class":757},[724,6253,5550],{"class":5521},[724,6255,1082],{"class":757},[724,6257,6259],{"class":726,"line":6258},53,[724,6260,748],{"emptyLinePlaceholder":747},[724,6262,6264],{"class":726,"line":6263},54,[724,6265,748],{"emptyLinePlaceholder":747},[724,6267,6269,6271,6274,6276,6278],{"class":726,"line":6268},55,[724,6270,970],{"class":969},[724,6272,6273],{"class":973}," postorder",[724,6275,977],{"class":757},[724,6277,6117],{"class":980},[724,6279,989],{"class":757},[724,6281,6283,6285,6287,6289,6291,6293,6295,6297,6299,6301,6303,6305,6307,6309,6311,6313,6315,6317,6319,6321,6323,6325,6327,6329,6331,6333],{"class":726,"line":6282},56,[724,6284,1176],{"class":730},[724,6286,6127],{"class":757},[724,6288,4499],{"class":730},[724,6290,6132],{"class":734},[724,6292,1231],{"class":757},[724,6294,5739],{"class":757},[724,6296,5783],{"class":730},[724,6298,6273],{"class":973},[724,6300,977],{"class":757},[724,6302,6117],{"class":973},[724,6304,617],{"class":757},[724,6306,5536],{"class":5521},[724,6308,1151],{"class":757},[724,6310,3480],{"class":757},[724,6312,6273],{"class":973},[724,6314,977],{"class":757},[724,6316,6117],{"class":973},[724,6318,617],{"class":757},[724,6320,5550],{"class":5521},[724,6322,1151],{"class":757},[724,6324,3480],{"class":757},[724,6326,778],{"class":757},[724,6328,6117],{"class":734},[724,6330,617],{"class":757},[724,6332,5522],{"class":5521},[724,6334,4038],{"class":757},[724,6336,6338],{"class":726,"line":6337},57,[724,6339,748],{"emptyLinePlaceholder":747},[724,6341,6343],{"class":726,"line":6342},58,[724,6344,748],{"emptyLinePlaceholder":747},[724,6346,6348,6350,6353,6355,6357],{"class":726,"line":6347},59,[724,6349,970],{"class":969},[724,6351,6352],{"class":973}," level_order",[724,6354,977],{"class":757},[724,6356,5082],{"class":980},[724,6358,989],{"class":757},[724,6360,6362,6365,6367,6369,6371,6374,6376,6378,6380,6382,6384,6387,6390],{"class":726,"line":6361},60,[724,6363,6364],{"class":734},"    resultaat",[724,6366,787],{"class":757},[724,6368,1566],{"class":734},[724,6370,758],{"class":757},[724,6372,6373],{"class":757}," [],",[724,6375,1015],{"class":973},[724,6377,1018],{"class":757},[724,6379,5082],{"class":973},[724,6381,2732],{"class":757},[724,6383,4499],{"class":730},[724,6385,6386],{"class":973}," wortel ",[724,6388,6389],{"class":730},"else",[724,6391,6392],{"class":757}," [])\n",[724,6394,6396,6398,6400],{"class":726,"line":6395},61,[724,6397,1040],{"class":730},[724,6399,1043],{"class":734},[724,6401,1046],{"class":757},[724,6403,6405,6408,6410,6412,6414,6416],{"class":726,"line":6404},62,[724,6406,6407],{"class":734},"        k ",[724,6409,758],{"class":757},[724,6411,1043],{"class":734},[724,6413,617],{"class":757},[724,6415,1061],{"class":973},[724,6417,1064],{"class":757},[724,6419,6421,6424,6426,6428,6430,6432,6434,6436],{"class":726,"line":6420},63,[724,6422,6423],{"class":734},"        resultaat",[724,6425,617],{"class":757},[724,6427,1075],{"class":973},[724,6429,977],{"class":757},[724,6431,6117],{"class":973},[724,6433,617],{"class":757},[724,6435,5522],{"class":5521},[724,6437,1082],{"class":757},[724,6439,6441,6443,6446,6448,6450,6452,6454,6456,6458,6461,6463,6465],{"class":726,"line":6440},64,[724,6442,1088],{"class":730},[724,6444,6445],{"class":734}," kind ",[724,6447,1094],{"class":730},[724,6449,44],{"class":757},[724,6451,6117],{"class":734},[724,6453,617],{"class":757},[724,6455,5536],{"class":5521},[724,6457,787],{"class":757},[724,6459,6460],{"class":734}," k",[724,6462,617],{"class":757},[724,6464,5550],{"class":5521},[724,6466,989],{"class":757},[724,6468,6470,6472,6474,6476,6478],{"class":726,"line":6469},65,[724,6471,1119],{"class":730},[724,6473,6445],{"class":734},[724,6475,1231],{"class":757},[724,6477,5736],{"class":757},[724,6479,1234],{"class":757},[724,6481,6483,6485,6487,6489,6491,6494],{"class":726,"line":6482},66,[724,6484,1160],{"class":734},[724,6486,617],{"class":757},[724,6488,1075],{"class":973},[724,6490,977],{"class":757},[724,6492,6493],{"class":973},"kind",[724,6495,1082],{"class":757},[724,6497,6499,6501],{"class":726,"line":6498},67,[724,6500,1176],{"class":730},[724,6502,6503],{"class":734}," resultaat\n",[724,6505,6507],{"class":726,"line":6506},68,[724,6508,748],{"emptyLinePlaceholder":747},[724,6510,6512],{"class":726,"line":6511},69,[724,6513,748],{"emptyLinePlaceholder":747},[724,6515,6517,6520,6522],{"class":726,"line":6516},70,[724,6518,6519],{"class":734},"wortel ",[724,6521,758],{"class":757},[724,6523,5541],{"class":757},[724,6525,6527,6529,6532,6534,6536,6538,6540,6542,6544,6547,6549,6551,6553,6556,6558,6561,6563,6565,6567,6570,6572,6575],{"class":726,"line":6526},71,[724,6528,4011],{"class":730},[724,6530,6531],{"class":734}," s ",[724,6533,1094],{"class":730},[724,6535,778],{"class":757},[724,6537,2277],{"class":1440},[724,6539,787],{"class":757},[724,6541,2484],{"class":1440},[724,6543,787],{"class":757},[724,6545,6546],{"class":1440}," 10",[724,6548,787],{"class":757},[724,6550,2448],{"class":1440},[724,6552,787],{"class":757},[724,6554,6555],{"class":1440}," 6",[724,6557,787],{"class":757},[724,6559,6560],{"class":1440}," 14",[724,6562,787],{"class":757},[724,6564,2435],{"class":1440},[724,6566,787],{"class":757},[724,6568,6569],{"class":1440}," 7",[724,6571,787],{"class":757},[724,6573,6574],{"class":1440}," 13",[724,6576,3980],{"class":757},[724,6578,6580,6583,6585,6587,6589,6591,6593,6596],{"class":726,"line":6579},72,[724,6581,6582],{"class":734},"    wortel ",[724,6584,758],{"class":757},[724,6586,5569],{"class":973},[724,6588,977],{"class":757},[724,6590,5082],{"class":973},[724,6592,787],{"class":757},[724,6594,6595],{"class":973}," s",[724,6597,1082],{"class":757},[724,6599,6601,6603,6605,6608,6610,6612,6614],{"class":726,"line":6600},73,[724,6602,1376],{"class":973},[724,6604,977],{"class":757},[724,6606,6607],{"class":973},"inorder",[724,6609,977],{"class":757},[724,6611,5082],{"class":973},[724,6613,1396],{"class":757},[724,6615,6616],{"class":1112},"  # [1, 3, 4, 6, 7, 8, 10, 13, 14]\n",[714,6618,6619],{"v-slot:java":130},[122,6620,6622],{"className":1431,"code":6621,"language":1433,"meta":130,"style":130},"import java.util.ArrayDeque;\nimport java.util.ArrayList;\nimport java.util.Deque;\nimport java.util.List;\n\nstatic class Knoop {\n    int sleutel;\n    Knoop links, rechts;\n\n    Knoop(int sleutel) {\n        this.sleutel = sleutel;\n    }\n}\n\nstatic Knoop voegToe(Knoop knoop, int sleutel) {\n    if (knoop == null) return new Knoop(sleutel); \u002F\u002F nieuwe sleutel wordt een blad\n    if (sleutel \u003C knoop.sleutel) knoop.links = voegToe(knoop.links, sleutel);\n    else if (sleutel > knoop.sleutel) knoop.rechts = voegToe(knoop.rechts, sleutel);\n    return knoop;\n}\n\nstatic Knoop zoek(Knoop knoop, int sleutel) {\n    while (knoop != null && knoop.sleutel != sleutel) {\n        knoop = sleutel \u003C knoop.sleutel ? knoop.links : knoop.rechts;\n    }\n    return knoop;\n}\n\nstatic Knoop verwijder(Knoop knoop, int sleutel) {\n    if (knoop == null) return null;\n    if (sleutel \u003C knoop.sleutel) {\n        knoop.links = verwijder(knoop.links, sleutel);\n    } else if (sleutel > knoop.sleutel) {\n        knoop.rechts = verwijder(knoop.rechts, sleutel);\n    } else {\n        if (knoop.links == null) return knoop.rechts; \u002F\u002F blad of alleen rechterkind\n        if (knoop.rechts == null) return knoop.links; \u002F\u002F alleen linkerkind\n        Knoop opvolger = knoop.rechts; \u002F\u002F twee kinderen: kleinste in rechter deelboom\n        while (opvolger.links != null) opvolger = opvolger.links;\n        knoop.sleutel = opvolger.sleutel;\n        knoop.rechts = verwijder(knoop.rechts, opvolger.sleutel);\n    }\n    return knoop;\n}\n\nstatic void preorder(Knoop k, List\u003CInteger> uit) {\n    if (k == null) return;\n    uit.add(k.sleutel);\n    preorder(k.links, uit);\n    preorder(k.rechts, uit);\n}\n\nstatic void inorder(Knoop k, List\u003CInteger> uit) {\n    if (k == null) return;\n    inorder(k.links, uit);\n    uit.add(k.sleutel);\n    inorder(k.rechts, uit);\n}\n\nstatic void postorder(Knoop k, List\u003CInteger> uit) {\n    if (k == null) return;\n    postorder(k.links, uit);\n    postorder(k.rechts, uit);\n    uit.add(k.sleutel);\n}\n\nstatic List\u003CInteger> levelOrder(Knoop wortel) {\n    List\u003CInteger> resultaat = new ArrayList\u003C>();\n    Deque\u003CKnoop> wachtrij = new ArrayDeque\u003C>();\n    if (wortel != null) wachtrij.add(wortel);\n    while (!wachtrij.isEmpty()) {\n        Knoop k = wachtrij.poll();\n        resultaat.add(k.sleutel);\n        if (k.links != null) wachtrij.add(k.links);\n        if (k.rechts != null) wachtrij.add(k.rechts);\n    }\n    return resultaat;\n}\n",[50,6623,6624,6641,6658,6675,6691,6695,6706,6715,6730,6734,6748,6762,6766,6770,6774,6800,6831,6874,6919,6927,6931,6935,6959,6990,7024,7028,7036,7040,7044,7068,7085,7105,7131,7156,7182,7190,7219,7248,7269,7297,7315,7345,7349,7357,7361,7365,7397,7414,7433,7452,7470,7474,7478,7508,7524,7543,7561,7579,7583,7587,7617,7633,7652,7670,7688,7692,7696,7722,7743,7763,7787,7803,7819,7837,7870,7903,7908,7918],{"__ignoreMap":130},[724,6625,6626,6628,6630,6632,6634,6636,6639],{"class":726,"line":727},[724,6627,738],{"class":1440},[724,6629,1443],{"class":969},[724,6631,617],{"class":757},[724,6633,1448],{"class":969},[724,6635,617],{"class":757},[724,6637,6638],{"class":969},"ArrayDeque",[724,6640,1456],{"class":757},[724,6642,6643,6645,6647,6649,6651,6653,6656],{"class":726,"line":744},[724,6644,738],{"class":1440},[724,6646,1443],{"class":969},[724,6648,617],{"class":757},[724,6650,1448],{"class":969},[724,6652,617],{"class":757},[724,6654,6655],{"class":969},"ArrayList",[724,6657,1456],{"class":757},[724,6659,6660,6662,6664,6666,6668,6670,6673],{"class":726,"line":751},[724,6661,738],{"class":1440},[724,6663,1443],{"class":969},[724,6665,617],{"class":757},[724,6667,1448],{"class":969},[724,6669,617],{"class":757},[724,6671,6672],{"class":969},"Deque",[724,6674,1456],{"class":757},[724,6676,6677,6679,6681,6683,6685,6687,6689],{"class":726,"line":764},[724,6678,738],{"class":1440},[724,6680,1443],{"class":969},[724,6682,617],{"class":757},[724,6684,1448],{"class":969},[724,6686,617],{"class":757},[724,6688,1540],{"class":969},[724,6690,1456],{"class":757},[724,6692,6693],{"class":726,"line":861},[724,6694,748],{"emptyLinePlaceholder":747},[724,6696,6697,6699,6702,6704],{"class":726,"line":950},[724,6698,1465],{"class":969},[724,6700,6701],{"class":969}," class",[724,6703,5488],{"class":1250},[724,6705,761],{"class":757},[724,6707,6708,6711,6713],{"class":726,"line":956},[724,6709,6710],{"class":969},"    int",[724,6712,5509],{"class":734},[724,6714,1456],{"class":757},[724,6716,6717,6720,6723,6725,6728],{"class":726,"line":961},[724,6718,6719],{"class":969},"    Knoop",[724,6721,6722],{"class":734}," links",[724,6724,787],{"class":757},[724,6726,6727],{"class":734}," rechts",[724,6729,1456],{"class":757},[724,6731,6732],{"class":726,"line":966},[724,6733,748],{"emptyLinePlaceholder":747},[724,6735,6736,6738,6740,6742,6744,6746],{"class":726,"line":992},[724,6737,6719],{"class":973},[724,6739,977],{"class":757},[724,6741,3056],{"class":969},[724,6743,5509],{"class":980},[724,6745,1151],{"class":757},[724,6747,761],{"class":757},[724,6749,6750,6753,6756,6758,6760],{"class":726,"line":1007},[724,6751,6752],{"class":757},"        this.",[724,6754,6755],{"class":734},"sleutel ",[724,6757,758],{"class":757},[724,6759,5509],{"class":734},[724,6761,1456],{"class":757},[724,6763,6764],{"class":726,"line":1026},[724,6765,1792],{"class":757},[724,6767,6768],{"class":726,"line":1037},[724,6769,953],{"class":757},[724,6771,6772],{"class":726,"line":1049},[724,6773,748],{"emptyLinePlaceholder":747},[724,6775,6776,6778,6780,6783,6785,6787,6789,6791,6794,6796,6798],{"class":726,"line":1067},[724,6777,1465],{"class":969},[724,6779,5488],{"class":969},[724,6781,6782],{"class":973}," voegToe",[724,6784,977],{"class":757},[724,6786,173],{"class":969},[724,6788,3065],{"class":734},[724,6790,787],{"class":757},[724,6792,6793],{"class":969}," int",[724,6795,5509],{"class":734},[724,6797,1151],{"class":757},[724,6799,761],{"class":757},[724,6801,6802,6804,6806,6809,6812,6815,6818,6820,6822,6824,6826,6828],{"class":726,"line":1085},[724,6803,1225],{"class":730},[724,6805,44],{"class":757},[724,6807,6808],{"class":734},"knoop ",[724,6810,6811],{"class":757},"==",[724,6813,6814],{"class":757}," null)",[724,6816,6817],{"class":730}," return",[724,6819,1531],{"class":730},[724,6821,5488],{"class":973},[724,6823,977],{"class":757},[724,6825,5522],{"class":734},[724,6827,1717],{"class":757},[724,6829,6830],{"class":1112}," \u002F\u002F nieuwe sleutel wordt een blad\n",[724,6832,6833,6835,6837,6839,6841,6843,6845,6847,6849,6851,6853,6856,6858,6860,6862,6864,6866,6868,6870,6872],{"class":726,"line":1116},[724,6834,1225],{"class":730},[724,6836,44],{"class":757},[724,6838,6755],{"class":734},[724,6840,1471],{"class":757},[724,6842,3065],{"class":734},[724,6844,617],{"class":757},[724,6846,5522],{"class":734},[724,6848,1151],{"class":757},[724,6850,3065],{"class":734},[724,6852,617],{"class":757},[724,6854,6855],{"class":734},"links ",[724,6857,758],{"class":757},[724,6859,6782],{"class":973},[724,6861,977],{"class":757},[724,6863,3299],{"class":734},[724,6865,617],{"class":757},[724,6867,5536],{"class":734},[724,6869,787],{"class":757},[724,6871,5509],{"class":734},[724,6873,1664],{"class":757},[724,6875,6876,6878,6880,6882,6884,6886,6888,6890,6892,6894,6896,6898,6901,6903,6905,6907,6909,6911,6913,6915,6917],{"class":726,"line":1135},[724,6877,5926],{"class":730},[724,6879,4499],{"class":730},[724,6881,44],{"class":757},[724,6883,6755],{"class":734},[724,6885,1477],{"class":757},[724,6887,3065],{"class":734},[724,6889,617],{"class":757},[724,6891,5522],{"class":734},[724,6893,1151],{"class":757},[724,6895,3065],{"class":734},[724,6897,617],{"class":757},[724,6899,6900],{"class":734},"rechts ",[724,6902,758],{"class":757},[724,6904,6782],{"class":973},[724,6906,977],{"class":757},[724,6908,3299],{"class":734},[724,6910,617],{"class":757},[724,6912,5550],{"class":734},[724,6914,787],{"class":757},[724,6916,5509],{"class":734},[724,6918,1664],{"class":757},[724,6920,6921,6923,6925],{"class":726,"line":1157},[724,6922,1176],{"class":730},[724,6924,3065],{"class":734},[724,6926,1456],{"class":757},[724,6928,6929],{"class":726,"line":1173},[724,6930,953],{"class":757},[724,6932,6933],{"class":726,"line":1182},[724,6934,748],{"emptyLinePlaceholder":747},[724,6936,6937,6939,6941,6943,6945,6947,6949,6951,6953,6955,6957],{"class":726,"line":1187},[724,6938,1465],{"class":969},[724,6940,5488],{"class":969},[724,6942,5715],{"class":973},[724,6944,977],{"class":757},[724,6946,173],{"class":969},[724,6948,3065],{"class":734},[724,6950,787],{"class":757},[724,6952,6793],{"class":969},[724,6954,5509],{"class":734},[724,6956,1151],{"class":757},[724,6958,761],{"class":757},[724,6960,6961,6963,6965,6967,6970,6973,6976,6978,6980,6982,6984,6986,6988],{"class":726,"line":1192},[724,6962,1040],{"class":730},[724,6964,44],{"class":757},[724,6966,6808],{"class":734},[724,6968,6969],{"class":757},"!=",[724,6971,6972],{"class":757}," null",[724,6974,6975],{"class":757}," &&",[724,6977,3065],{"class":734},[724,6979,617],{"class":757},[724,6981,6755],{"class":734},[724,6983,6969],{"class":757},[724,6985,5509],{"class":734},[724,6987,1151],{"class":757},[724,6989,761],{"class":757},[724,6991,6992,6994,6996,6998,7000,7002,7004,7006,7008,7010,7012,7014,7016,7018,7020,7022],{"class":726,"line":1222},[724,6993,5760],{"class":734},[724,6995,758],{"class":757},[724,6997,5613],{"class":734},[724,6999,1471],{"class":757},[724,7001,3065],{"class":734},[724,7003,617],{"class":757},[724,7005,6755],{"class":734},[724,7007,397],{"class":730},[724,7009,3065],{"class":734},[724,7011,617],{"class":757},[724,7013,6855],{"class":734},[724,7015,469],{"class":730},[724,7017,3065],{"class":734},[724,7019,617],{"class":757},[724,7021,5550],{"class":734},[724,7023,1456],{"class":757},[724,7025,7026],{"class":726,"line":1237},[724,7027,1792],{"class":757},[724,7029,7030,7032,7034],{"class":726,"line":1259},[724,7031,1176],{"class":730},[724,7033,3065],{"class":734},[724,7035,1456],{"class":757},[724,7037,7038],{"class":726,"line":1275},[724,7039,953],{"class":757},[724,7041,7042],{"class":726,"line":1291},[724,7043,748],{"emptyLinePlaceholder":747},[724,7045,7046,7048,7050,7052,7054,7056,7058,7060,7062,7064,7066],{"class":726,"line":1315},[724,7047,1465],{"class":969},[724,7049,5488],{"class":969},[724,7051,5811],{"class":973},[724,7053,977],{"class":757},[724,7055,173],{"class":969},[724,7057,3065],{"class":734},[724,7059,787],{"class":757},[724,7061,6793],{"class":969},[724,7063,5509],{"class":734},[724,7065,1151],{"class":757},[724,7067,761],{"class":757},[724,7069,7070,7072,7074,7076,7078,7080,7082],{"class":726,"line":1331},[724,7071,1225],{"class":730},[724,7073,44],{"class":757},[724,7075,6808],{"class":734},[724,7077,6811],{"class":757},[724,7079,6814],{"class":757},[724,7081,6817],{"class":730},[724,7083,7084],{"class":757}," null;\n",[724,7086,7087,7089,7091,7093,7095,7097,7099,7101,7103],{"class":726,"line":1356},[724,7088,1225],{"class":730},[724,7090,44],{"class":757},[724,7092,6755],{"class":734},[724,7094,1471],{"class":757},[724,7096,3065],{"class":734},[724,7098,617],{"class":757},[724,7100,5522],{"class":734},[724,7102,1151],{"class":757},[724,7104,761],{"class":757},[724,7106,7107,7109,7111,7113,7115,7117,7119,7121,7123,7125,7127,7129],{"class":726,"line":1363},[724,7108,5628],{"class":734},[724,7110,617],{"class":757},[724,7112,6855],{"class":734},[724,7114,758],{"class":757},[724,7116,5811],{"class":973},[724,7118,977],{"class":757},[724,7120,3299],{"class":734},[724,7122,617],{"class":757},[724,7124,5536],{"class":734},[724,7126,787],{"class":757},[724,7128,5509],{"class":734},[724,7130,1664],{"class":757},[724,7132,7133,7136,7138,7140,7142,7144,7146,7148,7150,7152,7154],{"class":726,"line":1368},[724,7134,7135],{"class":757},"    }",[724,7137,5783],{"class":730},[724,7139,4499],{"class":730},[724,7141,44],{"class":757},[724,7143,6755],{"class":734},[724,7145,1477],{"class":757},[724,7147,3065],{"class":734},[724,7149,617],{"class":757},[724,7151,5522],{"class":734},[724,7153,1151],{"class":757},[724,7155,761],{"class":757},[724,7157,7158,7160,7162,7164,7166,7168,7170,7172,7174,7176,7178,7180],{"class":726,"line":1373},[724,7159,5628],{"class":734},[724,7161,617],{"class":757},[724,7163,6900],{"class":734},[724,7165,758],{"class":757},[724,7167,5811],{"class":973},[724,7169,977],{"class":757},[724,7171,3299],{"class":734},[724,7173,617],{"class":757},[724,7175,5550],{"class":734},[724,7177,787],{"class":757},[724,7179,5509],{"class":734},[724,7181,1664],{"class":757},[724,7183,7184,7186,7188],{"class":726,"line":1402},[724,7185,7135],{"class":757},[724,7187,5783],{"class":730},[724,7189,761],{"class":757},[724,7191,7192,7194,7196,7198,7200,7202,7204,7206,7208,7210,7212,7214,7216],{"class":726,"line":2127},[724,7193,1318],{"class":730},[724,7195,44],{"class":757},[724,7197,3299],{"class":734},[724,7199,617],{"class":757},[724,7201,6855],{"class":734},[724,7203,6811],{"class":757},[724,7205,6814],{"class":757},[724,7207,6817],{"class":730},[724,7209,3065],{"class":734},[724,7211,617],{"class":757},[724,7213,5550],{"class":734},[724,7215,3396],{"class":757},[724,7217,7218],{"class":1112}," \u002F\u002F blad of alleen rechterkind\n",[724,7220,7221,7223,7225,7227,7229,7231,7233,7235,7237,7239,7241,7243,7245],{"class":726,"line":5961},[724,7222,1318],{"class":730},[724,7224,44],{"class":757},[724,7226,3299],{"class":734},[724,7228,617],{"class":757},[724,7230,6900],{"class":734},[724,7232,6811],{"class":757},[724,7234,6814],{"class":757},[724,7236,6817],{"class":730},[724,7238,3065],{"class":734},[724,7240,617],{"class":757},[724,7242,5536],{"class":734},[724,7244,3396],{"class":757},[724,7246,7247],{"class":1112}," \u002F\u002F alleen linkerkind\n",[724,7249,7250,7253,7256,7258,7260,7262,7264,7266],{"class":726,"line":5979},[724,7251,7252],{"class":969},"        Knoop",[724,7254,7255],{"class":734}," opvolger ",[724,7257,758],{"class":757},[724,7259,3065],{"class":734},[724,7261,617],{"class":757},[724,7263,5550],{"class":734},[724,7265,3396],{"class":757},[724,7267,7268],{"class":1112}," \u002F\u002F twee kinderen: kleinste in rechter deelboom\n",[724,7270,7271,7273,7275,7277,7279,7281,7283,7285,7287,7289,7291,7293,7295],{"class":726,"line":5991},[724,7272,6011],{"class":730},[724,7274,44],{"class":757},[724,7276,5283],{"class":734},[724,7278,617],{"class":757},[724,7280,6855],{"class":734},[724,7282,6969],{"class":757},[724,7284,6814],{"class":757},[724,7286,7255],{"class":734},[724,7288,758],{"class":757},[724,7290,6014],{"class":734},[724,7292,617],{"class":757},[724,7294,5536],{"class":734},[724,7296,1456],{"class":757},[724,7298,7299,7301,7303,7305,7307,7309,7311,7313],{"class":726,"line":6008},[724,7300,5628],{"class":734},[724,7302,617],{"class":757},[724,7304,6755],{"class":734},[724,7306,758],{"class":757},[724,7308,6014],{"class":734},[724,7310,617],{"class":757},[724,7312,5522],{"class":734},[724,7314,1456],{"class":757},[724,7316,7317,7319,7321,7323,7325,7327,7329,7331,7333,7335,7337,7339,7341,7343],{"class":726,"line":6027},[724,7318,5628],{"class":734},[724,7320,617],{"class":757},[724,7322,6900],{"class":734},[724,7324,758],{"class":757},[724,7326,5811],{"class":973},[724,7328,977],{"class":757},[724,7330,3299],{"class":734},[724,7332,617],{"class":757},[724,7334,5550],{"class":734},[724,7336,787],{"class":757},[724,7338,6014],{"class":734},[724,7340,617],{"class":757},[724,7342,5522],{"class":734},[724,7344,1664],{"class":757},[724,7346,7347],{"class":726,"line":6041},[724,7348,1792],{"class":757},[724,7350,7351,7353,7355],{"class":726,"line":6059},[724,7352,1176],{"class":730},[724,7354,3065],{"class":734},[724,7356,1456],{"class":757},[724,7358,7359],{"class":726,"line":6090},[724,7360,953],{"class":757},[724,7362,7363],{"class":726,"line":6097},[724,7364,748],{"emptyLinePlaceholder":747},[724,7366,7367,7369,7371,7373,7375,7377,7379,7381,7383,7385,7388,7390,7393,7395],{"class":726,"line":6102},[724,7368,1465],{"class":969},[724,7370,1925],{"class":969},[724,7372,6112],{"class":973},[724,7374,977],{"class":757},[724,7376,173],{"class":969},[724,7378,6460],{"class":734},[724,7380,787],{"class":757},[724,7382,1468],{"class":969},[724,7384,1471],{"class":757},[724,7386,7387],{"class":734},"Integer",[724,7389,1477],{"class":757},[724,7391,7392],{"class":734}," uit",[724,7394,1151],{"class":757},[724,7396,761],{"class":757},[724,7398,7399,7401,7403,7406,7408,7410,7412],{"class":726,"line":6107},[724,7400,1225],{"class":730},[724,7402,44],{"class":757},[724,7404,7405],{"class":734},"k ",[724,7407,6811],{"class":757},[724,7409,6814],{"class":757},[724,7411,6817],{"class":730},[724,7413,1456],{"class":757},[724,7415,7416,7419,7421,7423,7425,7427,7429,7431],{"class":726,"line":6122},[724,7417,7418],{"class":734},"    uit",[724,7420,617],{"class":757},[724,7422,1143],{"class":973},[724,7424,977],{"class":757},[724,7426,6117],{"class":734},[724,7428,617],{"class":757},[724,7430,5522],{"class":734},[724,7432,1664],{"class":757},[724,7434,7435,7438,7440,7442,7444,7446,7448,7450],{"class":726,"line":6179},[724,7436,7437],{"class":973},"    preorder",[724,7439,977],{"class":757},[724,7441,6117],{"class":734},[724,7443,617],{"class":757},[724,7445,5536],{"class":734},[724,7447,787],{"class":757},[724,7449,7392],{"class":734},[724,7451,1664],{"class":757},[724,7453,7454,7456,7458,7460,7462,7464,7466,7468],{"class":726,"line":6184},[724,7455,7437],{"class":973},[724,7457,977],{"class":757},[724,7459,6117],{"class":734},[724,7461,617],{"class":757},[724,7463,5550],{"class":734},[724,7465,787],{"class":757},[724,7467,7392],{"class":734},[724,7469,1664],{"class":757},[724,7471,7472],{"class":726,"line":6189},[724,7473,953],{"class":757},[724,7475,7476],{"class":726,"line":6203},[724,7477,748],{"emptyLinePlaceholder":747},[724,7479,7480,7482,7484,7486,7488,7490,7492,7494,7496,7498,7500,7502,7504,7506],{"class":726,"line":6258},[724,7481,1465],{"class":969},[724,7483,1925],{"class":969},[724,7485,6194],{"class":973},[724,7487,977],{"class":757},[724,7489,173],{"class":969},[724,7491,6460],{"class":734},[724,7493,787],{"class":757},[724,7495,1468],{"class":969},[724,7497,1471],{"class":757},[724,7499,7387],{"class":734},[724,7501,1477],{"class":757},[724,7503,7392],{"class":734},[724,7505,1151],{"class":757},[724,7507,761],{"class":757},[724,7509,7510,7512,7514,7516,7518,7520,7522],{"class":726,"line":6263},[724,7511,1225],{"class":730},[724,7513,44],{"class":757},[724,7515,7405],{"class":734},[724,7517,6811],{"class":757},[724,7519,6814],{"class":757},[724,7521,6817],{"class":730},[724,7523,1456],{"class":757},[724,7525,7526,7529,7531,7533,7535,7537,7539,7541],{"class":726,"line":6268},[724,7527,7528],{"class":973},"    inorder",[724,7530,977],{"class":757},[724,7532,6117],{"class":734},[724,7534,617],{"class":757},[724,7536,5536],{"class":734},[724,7538,787],{"class":757},[724,7540,7392],{"class":734},[724,7542,1664],{"class":757},[724,7544,7545,7547,7549,7551,7553,7555,7557,7559],{"class":726,"line":6282},[724,7546,7418],{"class":734},[724,7548,617],{"class":757},[724,7550,1143],{"class":973},[724,7552,977],{"class":757},[724,7554,6117],{"class":734},[724,7556,617],{"class":757},[724,7558,5522],{"class":734},[724,7560,1664],{"class":757},[724,7562,7563,7565,7567,7569,7571,7573,7575,7577],{"class":726,"line":6337},[724,7564,7528],{"class":973},[724,7566,977],{"class":757},[724,7568,6117],{"class":734},[724,7570,617],{"class":757},[724,7572,5550],{"class":734},[724,7574,787],{"class":757},[724,7576,7392],{"class":734},[724,7578,1664],{"class":757},[724,7580,7581],{"class":726,"line":6342},[724,7582,953],{"class":757},[724,7584,7585],{"class":726,"line":6347},[724,7586,748],{"emptyLinePlaceholder":747},[724,7588,7589,7591,7593,7595,7597,7599,7601,7603,7605,7607,7609,7611,7613,7615],{"class":726,"line":6361},[724,7590,1465],{"class":969},[724,7592,1925],{"class":969},[724,7594,6273],{"class":973},[724,7596,977],{"class":757},[724,7598,173],{"class":969},[724,7600,6460],{"class":734},[724,7602,787],{"class":757},[724,7604,1468],{"class":969},[724,7606,1471],{"class":757},[724,7608,7387],{"class":734},[724,7610,1477],{"class":757},[724,7612,7392],{"class":734},[724,7614,1151],{"class":757},[724,7616,761],{"class":757},[724,7618,7619,7621,7623,7625,7627,7629,7631],{"class":726,"line":6395},[724,7620,1225],{"class":730},[724,7622,44],{"class":757},[724,7624,7405],{"class":734},[724,7626,6811],{"class":757},[724,7628,6814],{"class":757},[724,7630,6817],{"class":730},[724,7632,1456],{"class":757},[724,7634,7635,7638,7640,7642,7644,7646,7648,7650],{"class":726,"line":6404},[724,7636,7637],{"class":973},"    postorder",[724,7639,977],{"class":757},[724,7641,6117],{"class":734},[724,7643,617],{"class":757},[724,7645,5536],{"class":734},[724,7647,787],{"class":757},[724,7649,7392],{"class":734},[724,7651,1664],{"class":757},[724,7653,7654,7656,7658,7660,7662,7664,7666,7668],{"class":726,"line":6420},[724,7655,7637],{"class":973},[724,7657,977],{"class":757},[724,7659,6117],{"class":734},[724,7661,617],{"class":757},[724,7663,5550],{"class":734},[724,7665,787],{"class":757},[724,7667,7392],{"class":734},[724,7669,1664],{"class":757},[724,7671,7672,7674,7676,7678,7680,7682,7684,7686],{"class":726,"line":6440},[724,7673,7418],{"class":734},[724,7675,617],{"class":757},[724,7677,1143],{"class":973},[724,7679,977],{"class":757},[724,7681,6117],{"class":734},[724,7683,617],{"class":757},[724,7685,5522],{"class":734},[724,7687,1664],{"class":757},[724,7689,7690],{"class":726,"line":6469},[724,7691,953],{"class":757},[724,7693,7694],{"class":726,"line":6482},[724,7695,748],{"emptyLinePlaceholder":747},[724,7697,7698,7700,7702,7704,7706,7708,7711,7713,7715,7718,7720],{"class":726,"line":6498},[724,7699,1465],{"class":969},[724,7701,1468],{"class":969},[724,7703,1471],{"class":757},[724,7705,7387],{"class":734},[724,7707,1477],{"class":757},[724,7709,7710],{"class":973}," levelOrder",[724,7712,977],{"class":757},[724,7714,173],{"class":969},[724,7716,7717],{"class":734}," wortel",[724,7719,1151],{"class":757},[724,7721,761],{"class":757},[724,7723,7724,7726,7728,7730,7732,7735,7737,7739,7741],{"class":726,"line":6506},[724,7725,1592],{"class":969},[724,7727,1471],{"class":757},[724,7729,7387],{"class":969},[724,7731,1477],{"class":757},[724,7733,7734],{"class":734}," resultaat ",[724,7736,758],{"class":757},[724,7738,1531],{"class":730},[724,7740,1607],{"class":969},[724,7742,1610],{"class":757},[724,7744,7745,7747,7749,7751,7753,7755,7757,7759,7761],{"class":726,"line":6511},[724,7746,1557],{"class":969},[724,7748,1471],{"class":757},[724,7750,173],{"class":969},[724,7752,1477],{"class":757},[724,7754,1566],{"class":734},[724,7756,758],{"class":757},[724,7758,1531],{"class":730},[724,7760,1573],{"class":969},[724,7762,1610],{"class":757},[724,7764,7765,7767,7769,7771,7773,7775,7777,7779,7781,7783,7785],{"class":726,"line":6516},[724,7766,1225],{"class":730},[724,7768,44],{"class":757},[724,7770,6519],{"class":734},[724,7772,6969],{"class":757},[724,7774,6814],{"class":757},[724,7776,1043],{"class":734},[724,7778,617],{"class":757},[724,7780,1143],{"class":973},[724,7782,977],{"class":757},[724,7784,5082],{"class":734},[724,7786,1664],{"class":757},[724,7788,7789,7791,7793,7795,7797,7799,7801],{"class":726,"line":6526},[724,7790,1040],{"class":730},[724,7792,1617],{"class":757},[724,7794,458],{"class":734},[724,7796,617],{"class":757},[724,7798,1624],{"class":973},[724,7800,1627],{"class":757},[724,7802,761],{"class":757},[724,7804,7805,7807,7809,7811,7813,7815,7817],{"class":726,"line":6579},[724,7806,7252],{"class":969},[724,7808,6132],{"class":734},[724,7810,758],{"class":757},[724,7812,1043],{"class":734},[724,7814,617],{"class":757},[724,7816,1646],{"class":973},[724,7818,1649],{"class":757},[724,7820,7821,7823,7825,7827,7829,7831,7833,7835],{"class":726,"line":6600},[724,7822,6423],{"class":734},[724,7824,617],{"class":757},[724,7826,1143],{"class":973},[724,7828,977],{"class":757},[724,7830,6117],{"class":734},[724,7832,617],{"class":757},[724,7834,5522],{"class":734},[724,7836,1664],{"class":757},[724,7838,7840,7842,7844,7846,7848,7850,7852,7854,7856,7858,7860,7862,7864,7866,7868],{"class":726,"line":7839},74,[724,7841,1318],{"class":730},[724,7843,44],{"class":757},[724,7845,6117],{"class":734},[724,7847,617],{"class":757},[724,7849,6855],{"class":734},[724,7851,6969],{"class":757},[724,7853,6814],{"class":757},[724,7855,1043],{"class":734},[724,7857,617],{"class":757},[724,7859,1143],{"class":973},[724,7861,977],{"class":757},[724,7863,6117],{"class":734},[724,7865,617],{"class":757},[724,7867,5536],{"class":734},[724,7869,1664],{"class":757},[724,7871,7873,7875,7877,7879,7881,7883,7885,7887,7889,7891,7893,7895,7897,7899,7901],{"class":726,"line":7872},75,[724,7874,1318],{"class":730},[724,7876,44],{"class":757},[724,7878,6117],{"class":734},[724,7880,617],{"class":757},[724,7882,6900],{"class":734},[724,7884,6969],{"class":757},[724,7886,6814],{"class":757},[724,7888,1043],{"class":734},[724,7890,617],{"class":757},[724,7892,1143],{"class":973},[724,7894,977],{"class":757},[724,7896,6117],{"class":734},[724,7898,617],{"class":757},[724,7900,5550],{"class":734},[724,7902,1664],{"class":757},[724,7904,7906],{"class":726,"line":7905},76,[724,7907,1792],{"class":757},[724,7909,7911,7913,7916],{"class":726,"line":7910},77,[724,7912,1176],{"class":730},[724,7914,7915],{"class":734}," resultaat",[724,7917,1456],{"class":757},[724,7919,7921],{"class":726,"line":7920},78,[724,7922,953],{"class":757},[30,7924,7926],{"id":7925},"gebalanceerd-of-scheef","Gebalanceerd of scheef",[10,7928,7929,7930,7933,7934,7936,7937,7940],{},"Alle operaties kosten ",[50,7931,7932],{},"O(h)",", met ",[50,7935,5231],{}," de hoogte van de boom. Hoe hoog is een boom met ",[50,7938,7939],{},"n"," knopen?",[35,7942,7943,7960],{},[38,7944,7945,7948,7949,7951,7952,7955,7956,7959],{},[41,7946,7947],{},"Gebalanceerd:"," elk niveau is (bijna) vol. Een boom met hoogte ",[50,7950,5231],{}," bevat dan tot ",[50,7953,7954],{},"2^(h+1) - 1","\nknopen, dus ",[50,7957,7958],{},"h ≈ log n",". Met een miljoen sleutels heb je ongeveer twintig stappen nodig.",[38,7961,7962,44,7965,7968,7969,7972,7973,7976,7977,617],{},[41,7963,7964],{},"Scheef",[14,7966,7967],{},"degenerate tree","): voeg je ",[50,7970,7971],{},"1, 2, 3, 4, 5"," in deze volgorde in, dan gaat elke sleutel naar\nrechts. Je krijgt een gelinkte lijst en ",[50,7974,7975],{},"h = n - 1",". Zoeken kost dan ",[50,7978,7979],{},"O(n)",[122,7981,7984],{"className":7982,"code":7983,"language":127},[125],"1\n \\\n  2\n   \\\n    3\n     \\\n      4\n       \\\n        5\n",[50,7985,7983],{"__ignoreMap":130},[10,7987,7988,7989,7992],{},"Gesorteerde invoer is precies het geval dat in de praktijk vaak voorkomt (oplopende id's,\ntijdstempels). Daarom gebruik je in echte software een ",[41,7990,7991],{},"zelfbalancerende"," boom.",[7994,7995,7997],"h3",{"id":7996},"avl-bomen-en-rotaties","AVL-bomen en rotaties",[10,7999,8000,8001,8004],{},"Een AVL-boom is een BST die na elke invoeging en verwijdering controleert of bij elke knoop de\nhoogtes van de linker en rechter deelboom hoogstens 1 verschillen. Zo niet, dan herstelt hij de balans\nmet een ",[41,8002,8003],{},"rotatie",": een kleine herschikking van drie knopen die de BST-eigenschap behoudt.",[35,8006,8007,8013,8019],{},[38,8008,8009,8012],{},[41,8010,8011],{},"Rotatie naar rechts"," bij een te zware linkerkant (links-links-geval).",[38,8014,8015,8018],{},[41,8016,8017],{},"Rotatie naar links"," bij een te zware rechterkant (rechts-rechts-geval).",[38,8020,8021,8024],{},[41,8022,8023],{},"Dubbele rotaties"," (links-rechts en rechts-links) als de zware kant een \"knik\" heeft.",[10,8026,8027,8028,8030,8031,8034,8035,8038,8039,8041,8042,617],{},"Een rotatie kost ",[50,8029,407],{},", dus een AVL-boom garandeert ",[50,8032,8033],{},"O(log n)"," voor alle operaties. Een rood-zwarte\nboom (",[14,8036,8037],{},"red-black tree",") doet hetzelfde met iets soepelere regels; die zit achter Java's ",[50,8040,5004],{}," en\n",[50,8043,8044],{},"TreeSet",[30,8046,4742],{"id":4741},[162,8048,8049,8062],{},[165,8050,8051],{},[168,8052,8053,8056,8059],{},[171,8054,8055],{},"Operatie",[171,8057,8058],{},"Gebalanceerd",[171,8060,8061],{},"Scheef (slechtste geval)",[177,8063,8064,8076,8088,8101,8114],{},[168,8065,8066,8068,8072],{},[182,8067,5181],{},[182,8069,8070],{},[50,8071,8033],{},[182,8073,8074],{},[50,8075,7979],{},[168,8077,8078,8080,8084],{},[182,8079,5042],{},[182,8081,8082],{},[50,8083,8033],{},[182,8085,8086],{},[50,8087,7979],{},[168,8089,8090,8093,8097],{},[182,8091,8092],{},"Verwijderen",[182,8094,8095],{},[50,8096,8033],{},[182,8098,8099],{},[50,8100,7979],{},[168,8102,8103,8106,8110],{},[182,8104,8105],{},"Doorlopen (alle vier)",[182,8107,8108],{},[50,8109,7979],{},[182,8111,8112],{},[50,8113,7979],{},[168,8115,8116,8119,8123],{},[182,8117,8118],{},"Minimum \u002F maximum",[182,8120,8121],{},[50,8122,8033],{},[182,8124,8125],{},[50,8126,7979],{},[10,8128,8129,8130,8134,8135,8137],{},"Voor een AVL- of rood-zwarte boom geldt de middelste kolom altijd. Vergelijk dit met een\n",[455,8131,8133],{"href":8132},"\u002Fpracticely\u002Fdsa\u002Fhashtabellen","hashtabel",": die is gemiddeld sneller (",[50,8136,407],{},"), maar een zoekboom houdt\nde sleutels gesorteerd, zodat je ook \"geef alle sleutels tussen 20 en 50\" efficiënt kunt beantwoorden.",[30,8139,4877],{"id":4876},[3636,8141,8142,8154,8172,8178,8192],{},[38,8143,8144,8147,8148,8150,8151,8153],{},[41,8145,8146],{},"Alleen met het directe kind vergelijken."," De BST-eigenschap geldt voor de hele deelboom. Een\nboom met ",[50,8149,565],{}," als wortel en ",[50,8152,2291],{}," ergens in de linker deelboom is geen BST, ook al klopt elk\nouder-kindpaar.",[38,8155,8156,8159,8160,8163,8164,8166,8167,8169,8170,617],{},[41,8157,8158],{},"Met de verkeerde opvolger vervangen."," Bij twee kinderen neem je de ",[41,8161,8162],{},"kleinste in de rechter","\ndeelboom, niet het rechterkind zelf. Bij het verwijderen van ",[50,8165,536],{}," is dat ",[50,8168,551],{},", niet ",[50,8171,580],{},[38,8173,8174,8177],{},[41,8175,8176],{},"Preorder en postorder verwisselen."," Preorder begint met de wortel, postorder eindigt ermee.",[38,8179,8180,8183,8184,8187,8188,8191],{},[41,8181,8182],{},"Level-order als \"eerst alles links\" lezen."," Level-order gaat niveau voor niveau: ",[50,8185,8186],{},"8, 3, 10, …",",\nniet ",[50,8189,8190],{},"8, 3, 1, …"," (dat is preorder).",[38,8193,8194,8197,8198,8201],{},[41,8195,8196],{},"Vergeten dat de invoegvolgorde de vorm bepaalt."," Gesorteerde invoer geeft een scheve boom met\nhoogte ",[50,8199,8200],{},"n - 1",", geen gebalanceerde.",[30,8203,4933],{"id":4932},[35,8205,8206,8209,8212,8215,8226],{},[38,8207,8208],{},"In een BST staat alles links van een knoop kleiner en alles rechts groter; inorder geeft de\ngesorteerde volgorde.",[38,8210,8211],{},"Invoegen en zoeken volgen één pad vanaf de wortel; nieuwe sleutels worden altijd een blad.",[38,8213,8214],{},"Verwijderen kent drie gevallen; bij twee kinderen vervang je de sleutel door de opvolger, de\nkleinste in de rechter deelboom.",[38,8216,7929,8217,8219,8220,8222,8223,8225],{},[50,8218,7932],{},": ",[50,8221,8033],{}," als de boom gebalanceerd is, ",[50,8224,7979],{}," als hij scheef is.",[38,8227,8228],{},"AVL- en rood-zwarte bomen houden de boom met rotaties in balans.",[4958,8230,8231],{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s5tWE, html code.shiki .s5tWE{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":130,"searchDepth":744,"depth":744,"links":8233},[8234,8235,8236,8237,8238,8239,8240,8243,8244,8245],{"id":5008,"depth":744,"text":5009},{"id":5041,"depth":744,"text":5042},{"id":5180,"depth":744,"text":5181},{"id":5235,"depth":744,"text":5236},{"id":5330,"depth":744,"text":5331},{"id":50,"depth":744,"text":5453},{"id":7925,"depth":744,"text":7926,"children":8241},[8242],{"id":7996,"depth":751,"text":7997},{"id":4741,"depth":744,"text":4742},{"id":4876,"depth":744,"text":4877},{"id":4932,"depth":744,"text":4933},"Hoe werkt een binaire zoekboom? Leer invoegen, zoeken, verwijderen met de opvolger en preorder, inorder, postorder en level-order, met code in Python en Java.","i-lucide-git-fork",{},"\u002Fpracticely-dsa\u002Fbinaire-zoekbomen",{"title":4984,"description":8246},"practicely-dsa\u002Fbinaire-zoekbomen","binaire-zoekbomen","5yuwA2hIh7vFKmCQQsxSvrXzYaI0R4crBkjJJQZuPhU",null,1793084908327]