Třetí domácí úkol

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.

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).

~~DISCUSSION:closed~~

courses/b6b36omo/hw/03/start.txt · Last modified: 2018/10/03 11:13 (external edit)