Ez ál házi (ez extra hitel). Van egy BST amely egy index szó, hogy pont a vonalak (tárolt máshol), amely tartalmazza a szavak. Kell, hogy végre egy utat keresni az S-kifejezések, így tudok kombinálni és (&) és vagy (|).
Írja be a parancssorba a felhasználó tudta be valami ilyesmit:
QUERY ((((fire)&(forest))|((ocean)&(boat)))&(water))
Lényegében, hogy vissza kell adnia minden sort, amely tartalmazza a szavak tűz, erdő és a víz, valamint a sorokban, amelyek tartalmazzák az óceán, a hajó és a víz.
Amit igazán kell segíteni a logika értelmezésére és beillesztése csomópontok a fába, hogy megfelelően képviselje a kifejezés több, mint a tényleges kódot. Az egyetlen dolog, amit dolgoztam ki, hogy van értelme számomra visszatér egy sor sor minden szó a kifejezésben. Aztán attól függően, hogy ez egy „vagy” vagy „és a” művelet azt végrehajtani unió vagy metszettípust műveletet az említett készletek létrehozása egy sor új és add, hogy akár a fa.
Én egyfajta elveszett, hogyan kell elemezni a sort, amely tartalmazza a kifejezést. Némi gondolkodás után úgy tűnik, hogy a „távolabbi” ki az egyik al-kifejezéseket a magasabb kell legyen az én s-kifejezésfa? Azt hiszem, ha kaphatnék egy push a helyes irányba, amennyire elemzés és behelyezi a kifejezést a fát én minden rendben lesz.
Saját minta fa kitaláltam a fenti lekérdezés valahogy így néz ki;
&
/ \
| water
/ \
& &
/ \ / \
fire forest ocean boat
Ez az értelme, mint a tűz visszatér egy sor vonalak, melyek mindegyike tartalmazza a tűz és az erdő visszatér egy sor vonalak, melyek mindegyike tartalmazza erdőben. Aztán a „&” szint azt, hogy ezeket a két, és hozzon létre egy másik, amely csak a vonalak, amelyek a mindkét ezáltal nekem egy sor, amely csak vonalak, amelyek mind a tűz és az erdő.
A másik akadály az, hogyan képviselje mindent a fa, miután az akadályt leküzdeni a elemzés. Van egy ExpTreeNode osztály szolgál majd a csomópontokat az én ExpTree (BST), és akkor már 2 alosztályok, operátor és operandus, de nem vagyok biztos abban, hogy ez egy jó megközelítés.













