Aceasta este tema pseudo (e extra credit). Am o BST, care este un index de cuvinte care indică liniile (stocate în altă parte), care conțin cuvintele. Am nevoie să pună în aplicare un mod de a căuta utilizând s-expresii, astfel că pot combina și (&) și sau (|).
La comanda solicita un utilizator ar putea tip ceva de genul:
QUERY ((((fire)&(forest))|((ocean)&(boat)))&(water))
În esență, că ar trebui să se întoarcă toate liniile care conțin cuvintele foc, pădurea și apă precum și toate liniile care conțin ocean, barcă și apă.
Ceea ce într-adevăr nevoie de ajutor cu logica este necesară pentru analizarea și nodurile fi introduse în copac pentru a reprezenta în mod corespunzător expresia mai mult decât codul actual. Singurul lucru pe care l-am elaborat care are sens pentru mine returnează un set de linii pentru fiecare cuvânt în expresie. Apoi, în funcție de cazul în care este un „sau“ sau „și“ operațiune mi-ar realiza o uniune sau operațiune de tip intersecție pe aceste seturi pentru a crea un set nou și să treacă pe care copacul.
Sunt un fel de pierdut cu privire la modul de a analiza linia care conține expresia. După unele crezut, se pare că „mai departe“, unul dintre sub-expresii este cea mai mare ar trebui să fie în copacul meu s-exprimare? Cred că dacă aș putea obține doar un impuls în direcția corectă în ceea ce privește analiza și inserarea expresiile în arborele ar trebui să fie OK.
copacul meu probă că am venit cu pentru interogarea de mai sus arata ceva de genul;
&
/ \
| water
/ \
& &
/ \ / \
fire forest ocean boat
Acest lucru are sens ca focul se va întoarce un set de linii care conțin toate foc și pădurilor va returna un set de linii care conțin toate pădure. Apoi, la „&“ nivelul I ar lua cele două seturi și de a crea un alt set care conținea numai liniile care au fost în ambele seturi oferindu-mi astfel un set care are doar linii care conțin atât foc și de pădure.
alt bloc de poticnire mea este cum să reprezinte totul în copac după ce am depășit obstacolul parsare. Am o clasă de ExpTreeNode care va servi ca nodurile pentru ExpTree mea (BST) și apoi am 2 subclase, operatorul și operand, dar nu sunt sigur dacă acest lucru este o bună abordare.













