====== Strukture ====== - Uvod * enostavni objekti: 42, 4.2, ''thomas'', ''X'' * sestavljamo jih v strukture * ''point(2, 4)'' * ''line(point(0, 0), point(1, 2))'' * ''[a,b,c]'' * prilagajanje (//matching//) * ''L = line(A, B), A = point(0, 0), B = point(1, 2)'' * ''L = [H|T]'' - Binarna drevesa * rekurzivno definiran podatkovni tip * prazno drevo: ''nil'' * splošno drevo: ''b(Left, X, Right)'' * list drevesa: ''b(nil, X, nil)'' * skupaj rešimo ''memberBT/2'' - Splošna drevesa * prvi argument v strukturi je koren, ostali elementi so poddrevesa * prazno drevo: ''nil'' (vendar ga nikjer pri vajah ne rabimo) * splošno drevo: ''t(X, Subtree1, Subtree2, …)'' * list drevesa: ''t(X)'' * operator ''=..'' * spremeni strukturo v seznam… * ''Tree = t(42, t(4), t(2)), Tree =.. [t,X|Subtrees]'' *… ali obratno * ''Tree =.. [t,42|[t(4),t(2)]]'' - Naloge - binarna drevesa * ''numberBT/2'' * ''depthBT/2'' * ''mirrorBT/2'' * ''tolistBT(Tree, List)'' * ''List'' je seznam elementov binarnega drevesa ''Tree'' v infiksnem vrstnem redu * ''deleteBT/3'' * kot ''del/3'' (vrača vsa možna drevesa z enim odstranjenim elementom) * malo težja naloga * ''insertBT/3'' - splošna drevesa * ''memberT/2'' * ''maxT/2''