Dette er pseudo lekser (det er ekstra kreditt). Jeg har en BST som er en indeks over ord som peker til de linjene (lagret et annet sted) som inneholder ordene. Jeg trenger å implementere en måte å søke med S-uttrykk slik at jeg kan kombinere og (&) og eller (|).
Ved ledeteksten en bruker kan skrive noe sånt som:
QUERY ((((fire)&(forest))|((ocean)&(boat)))&(water))
Hovedsak at skal returnere alle linjer som inneholder ordene brann, skog og vann, samt alle linjer som inneholder hav, båt og vann.
Det jeg virkelig trenger hjelp med er logikken for parsing og sette inn noder i treet du skal representere uttrykket mer enn selve koden. Det eneste jeg har jobbet ut som er fornuftig for meg returnerer et sett med linjer for hvert ord i uttrykket. Så avhengig av om det er en eller eller og operasjon jeg ville utføre en forening eller kryss typen operasjon på disse settene for å opprette et nytt sett og pass på at den opp i treet.
Jeg slags tapt på hvordan å analysere linjen som inneholder uttrykket. Etter noen trodde det ser ut til at lenger ut en av de sub-uttrykkene er det høyeste det skal være i min s-uttrykk treet? Jeg tror at hvis jeg bare kunne få en dytt i riktig retning så langt som parsing og sette inn uttrykkene i treet jeg burde være OK.
Min prøve tre som jeg kom opp med for spørringen ovenfor ser omtrent slik ut;
&
/ \
| water
/ \
& &
/ \ / \
fire forest ocean boat
Dette er fornuftig som ild vil returnere et sett med linjer som alle inneholder brann og skogen vil returnere et sett med linjer som alle inneholder skogen. Så på & nivå jeg ville ta de to sett og opprette et nytt sett som inneholdt bare de linjene som var i begge settene og dermed gi meg et sett som bare har linjer som inneholder både brann og skog.
Min andre snublestein er hvordan man skal representere alt i treet etter at jeg overvinne hinder for parsing. Jeg har en ExpTreeNode klasse som vil tjene som nodene for min ExpTree (BST) og da har jeg 2 underklasser, operatør og operand, men jeg er ikke sikker på om dette er en god tilnærming.













