Autor: | Miroslav Beneš |
---|---|
Organizace: | Katedra informatiky FEI VŠB-TU Ostrava |
Popis: | Na ukázkovém příkladu se seznámíte s reprezentací binárního vyhledávacího stromu a prakticky si vyzkoušíte práci se stromem reprezentujícím aritmetický výraz. |
Podobně jako v metodě contains hledejte při implementaci vkládání nejprve vkládanou hodnotu. Jestliže se hodnota ve stromu už najde, operace končí. Pokud při hledání narazíme na null, vytvoříme nový uzel s vkládanou hodnotou a odkaz na něj zapíšeme místo null. Pro nastavení reference na levý nebo pravý podstrom budete muset rozšířit rozhraní Node o příslušné operace a třídu TreeNode o jejich implementaci.Třídy: Node, NodeImpl, SearchTree, SearchTreeImpl, Priklad1
Třídu pro unární operátor změny znaménka odvoďte podobně jako u binárních operátorů nejprve z abstraktní třídy UnaryExpr, která ponese výraz představující operand.Třídy: Expr, BinaryExpr, PlusExpr, ConstExpr, Priklad2
Při převodu operátorů na řetězec nezapomeňte brát v úvahu i prioritu operátorů tak, aby byl zachován význam výrazu. To znamená, že výraz musíte v některých případech (resp. pro jednoduchost vždy) obalit závorkami, např. ((2+3)*(-5)). Pokud to zvládnete, pokuste se najít takové řešení, které bude závorky přidávat jen v nezbytně nutných případech.