Search
Uvažujte strom s libovolným počtem dětí v každém uzlu:
interface Node { String getName(); Node[] getChildren(); // nesmi vratit null, ve vracenem poli nesmi byt null Node getParent(); // vrati rodice tohoto uzlu nebo null, pokud je tento uzel koren }
Tento strom se dá zakódovat do binárního stromu (má maximálně dvě děti)
interface BinaryNode { String getName(); BinaryNode getLeftChild(); // vrati leve dite nebo null, pokud leve dite neexistuje BinaryNode getRightChild(); // vrati prave dite nebo null, pokud prave dite neexistuje BinaryNode getParent(); // vrati rodice tohoto uzlu nebo null, pokud je tento uzel koren }
pomocí následujícího schématu: první dítě původního uzlu vrátíme jako levého potomka binárního uzlu a každé n-té dítě (n > 1) vrátíme jako pravého potomka binárního uzlu reprezentujícího n-1 dítě.
Vaším úkolem je napsat metodu Homework3.adapt která vyrobí adaptér binárního stromu zpět na strom s libovolným počtem dětí. Pozor: musí jít o adaptér, ne o kopii, tzn. změna v původním stromu se transparentně projeví i v uzlech (tranzitivně) vrácených metodou adapt.
Homework3.adapt
adapt
class Homework3 { static Node adapt(BinaryNode n); }
Do odevzdávaného kódu samozřejmě zahrňte i další třídy potřebné pro kompilaci (ne rozhraní Node a BinaryNode) a umístěte je do souboru homeworks/Homework3.java. Termín odevzdání 21. 3. 1:59 ráno (čas podle serveru s repozitáři).
Node
BinaryNode
homeworks/Homework3.java
~~DISCUSSION:closed~~