ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
380
380
EMPFEHLEN
-
Hallo
ich sitze jetzt schon, ohne Übertreibung, einige Stunden mit dem berühmten Brett vorm Kopf vor diesem Problem:
Ausgangsknoten A in einer Baumklasse mit den Attributen next, data, child und sibling.
Relevant ist hier nur sibling. Wie kann ich möglichst einfach dem Knoten A eine Kette von siblings anhängen? Wenns statisch wäre könnte ich ja schreiben
A.sibling = new Node();
A.sibling.sibling = new Node();
Genau das kann ich aber nicht. Ein Denkanstoss reicht mir evtl schon. Danke.
-
22.01.05 15:38 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Wie wär's denn damit:
Siblings sind "Geschwister" und um nicht "unnötig" Speicher zu verbrauchen sollte man sie über den Parent beziehen. Man könnte beispielsweise sagen:
"Die Geschwister eines Knotes sind alle Kinder des Vaters dieses jeweiliegen Knotens ohne den Knoten selbst".
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
/* * Created on 22.01.2005@14:23:34 * * TODO Licence info */ package de.tutorials; import java.util.ArrayList; import java.util.Collections; import java.util.List; class TreeNode { protected Object data; protected TreeNode parent; // ? auf "wen" soll next verweisen ? protected TreeNode next; // Kind elemente protected List<TreeNode> children; public TreeNode(TreeNode parent, Object data) { this.parent = parent; this.data = data; this.children = new ArrayList<TreeNode>(); } //Geschwister-Elemente protected List<TreeNode> getSiblings() { if (parent == null) return Collections.EMPTY_LIST; List<TreeNode> list = new ArrayList<TreeNode>(parent.getSiblings()); list.remove(this); return Collections.unmodifiableList(list); } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
/* * Created on 22.01.2005@14:03:19 * * TODO Licence info */ package de.tutorials; import java.util.Iterator; /** * @author Darimont * * TODO Explain me */ public class TreeExample { public static void main(String[] args) { new TreeExample().doIt(); } private void doIt() { // TODO Auto-generated method stub TreeNode root = new TreeNode(null, "root"); generateSomeChilds(root, 0); printTree(root); } /** * @param root */ private void printTree(TreeNode node) { if (node.children != null && node.children.size() > 0) { for (Iterator<TreeNode> iter = node.children.iterator(); iter .hasNext();) { printTree(iter.next()); } } System.out.println(node.data); } private void generateSomeChilds(TreeNode root, int level) { if (level >= 3) return; for (int i = 0; i < 4; i++) { TreeNode node = new TreeNode(root, "[" + root.data + "]" + "->data" + i); root.children.add(node); generateSomeChilds(node, ++level); } } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Danke, aber das ist für die Sache schon Overkill
. Ich habs jetzt so gemacht:
Code :1 2 3 4 5 6 7 8 9 10 11 12
private TreeNode createSiblings(TreeNode child, String replace) { TreeNode node = child; for (int i = 1; i < replace.length(); i++) { node.sibling = new TreeNode(replace.substring(i, i + 1), child.depth); node = buildTree(node.sibling); } return child; }
Ähnliche Themen
-
Rekursive Dateisuche
Von max26 im Forum PHPAntworten: 6Letzter Beitrag: 25.07.09, 23:58 -
Rekursive Multiplikation
Von FiselM im Forum JavaAntworten: 16Letzter Beitrag: 05.01.08, 20:19 -
rekursive Navigation
Von Sebigf im Forum PHPAntworten: 2Letzter Beitrag: 03.03.06, 00:22 -
Rekursive Datenbankabfrage?! :-/
Von splat im Forum PHPAntworten: 0Letzter Beitrag: 02.02.05, 18:03 -
rekursive funktion
Von thespecialx im Forum JavaAntworten: 1Letzter Beitrag: 08.12.04, 21:13





Zitieren

Login





