Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
import java.util.ArrayList; public interface Node { }
public class InnerNode implements Node { private ArrayList<Node> = new ArrayList<Node>(); //Her laver du så nogle metoder til at tilføje og fjerne knuder, og evt give mulighed for at gemme data }
public class Leaf implements Node { //Her kan du så lave nogle metoder så et leaf kan indeholde data... }
En visning kan hurtigt laves med et rekursivt gennemløb af træet som spytter strenge ud, du kan sætte sammen. Definer en metode på interfacet som for InnerNode's vedkommende kalder rekursivt på elementerne i listen og som for Leaf's vedkommende viser at der er tale om et blad...
En grafisk visning kan laves med værktøjet Graphviz. Det kræver at du spytter ovennævnte strenge ud i bestemt format. Så kan de gives til Graphiz som laver en grafisk visning. Se http://www.research.att.com/sw/tools/graphviz/ for dokumentation...
kunne jo så tilføje en knude i træet (hvis listen over knuder hedder nodeList. Jeg glemte at navngive den) og tilsvarende kunne du jo så lave en removeNode som løber listen igennem og fjerner den ønskede knude.
Et gennemløb af træet kan laves sådan her (for innerNode):
public void traverse() { for (Node n: nodeList) { n.traverse(); } }
og for Leaf, kan du så skrive værdien ud på skærmen eller noget andet...
Vær opmærksom på at thomas' link kun fortæller om binære træer. Listen i mit forslag bruges for at kunne understøtte et vilkårligt antal børn i hver knude (som dit originale træ viser). Det ændrer noget på hvordan man behandler knuderne når man løber dem igennem osv. Der handler det om liste-operationer med mit forslag.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.