1
Я новичок в дереве, как структуры. Я написал этот вид дерева.Итерация и поиск корня в структуре дерева java
Как пронестись по дереву? Как найти все корни (у меня есть метод для основного корня, но я хочу найти все корни, которые находятся внутри дерева) в дереве? Каков правильный способ использования древовидной структуры в java - каждый раз пишите свой один класс или используя TreeMap?
TreeNode
public class TreeNode<T> {
private T value;
private boolean hasParent;
private ArrayList<TreeNode<T>> children;
public TreeNode(T value) {
if (value == null) {
throw new IllegalArgumentException("Cannot insert null value!");
}
this.value = value;
this.children = new ArrayList<TreeNode<T>>();
}
public final T getValue() {
return this.value;
}
public final void setValue(T value) {
this.value = value;
}
public final int getChildrenCount() {
return this.children.size();
}
public final void addChild(TreeNode<T> child) {
if (child == null) {
throw new IllegalArgumentException("Cannot insert null value!");
}
if (child.hasParent) {
throw new IllegalArgumentException("The node already has a parent!");
}
child.hasParent = true;
this.children.add(child);
}
public final TreeNode<T> getChild(int index) {
return this.children.get(index);
}
Дерево
public class Tree<T> {
TreeNode<T> root;
public Tree(T value) {
if (value == null) {
throw new IllegalArgumentException("Cannot insert null value!");
}
this.root = new TreeNode<T>(value);
}
public Tree(T value, Tree<T>... children) {
this(value);
for (Tree<T> child : children) {
this.root.addChild(child.root);
}
}
public final TreeNode<T> getRoot() {
return this.root;
}
Какие трудности у вас возникают? Пожалуйста, будьте более конкретными. – sferencik
@ sferencik Я обновляю свой вопрос. – NoSuchUserException
Помогает ли [это] (http://stackoverflow.com/a/16877866/1540600)? – sferencik