Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 11 / 15 Dvejetainiai medžiai ir BST ~50 min
Kodas

Matavimo aplinka ir testai

Trys failai vienu žingsniu: matavimo aplinka, testai ir trys naujos komandos main.go.

komanda ką daro
algo alpha pirmo žingsnio atsakymas: apėjimas, Min/Max, rėžis
algo tree medis prieš 10 pamokos maišos indeksą ir prieš 1 pamokos tiesinę
algo shape ta pati biblioteka, dvi įterpimo tvarkos

Testai (bst_test.go) tikrina šešis dalykus:

testas ką reikalauja
TestTreeStoresAndFinds randa visus įdėtus, neranda neįdėto
TestTreeDuplicateKeysReplace vienodas raktas pakeičia (kaip 10 pamokoje)
TestKeysComeBackSorted Keys() YRA surikiuotas; Min/Max sutampa su kraštais
TestRangeReturnsOnlyTheBand rėžis grąžina tik savo juostą ir aplanko mažiau nei visus mazgus
TestShuffledInsertStaysLogarithmic maišytai įterpiant gylis lieka logaritminis
TestSortedInsertDegeneratesIntoAList surikiuotai įterpiant Height() == n

Trečiasis atrodo pažįstamai — ir turi atrodyti. Dešimtoje pamokoje testas reikalavo, kad Keys() nebūtų surikiuotas, nes maišos indeksas tvarkos pažadėti negali. Čia jis reikalauja, kad būtų. Tas pats testas, priešingas ženklas: du pažadai, dvi struktūros.

Paskutinis — vėl trūkumą įtvirtinantis testas, kaip septintos pamokos atrankinis rikiavimas, aštuntos quicksort ir devintos nestabilus praėjimas. Jis reikalauja, kad surikiuotas įterpimas duotų lygiai n aukščio medį.

Jei kada nors ims kristi — tu pastatei ne paprastą BST. Dvyliktoje pamokoje būtent tai ir padarysi, sąmoningai; iki tol jis saugo, kad septinto žingsnio demonstracija liktų.