2016-12-06 5 views
2

Может ли кто-нибудь указать мне на стандарт , протестированный, простой вариант реализации дерева в Java?Реализация структуры данных дерева Java

Например, все StackOverflow поиска на Java дерева ведут к этой теме, Tree implementation in Java (root, parents and children)

но тогда вы обнаружите, что Принимается ответ в этой теме не работает и дает переполнение Exception (https://stackoverflow.com/a/40622616/1005607) - очень опасно, может быть, кто-то должен удалить или отредактировать этот ответ или хотя бы переместить его.

Есть некоторые не StackOverflow ресурсов, но еще раз я не знаю, насколько надежно они, http://programtalk.com/java/java-tree-implementation/

Я считаю, что трудно поверить, что нет многоразовой надёжной реализации мы можем идти быстро. Узел должен отслеживать его родителя и детей. Ошибок не должно быть.

+0

Я Структуры данных и алгоритм-анализа в Java Марк Аллен Weiss, в разделе дерева есть хорошая реализация дерева –

ответ

2

Проблема вопроса, который вы показали (https://stackoverflow.com/a/40622616/1005607), заключается в том, что методы addChild и setParent перекликаются друг с другом в бесконечном цикле.

public void setParent(Node<T> parent) { 
    parent.addChild(this); // Call addChild 
    this.parent = parent; 
} 

public void addChild(Node<T> child) { 
    child.setParent(this); // Call setParent 
    this.children.add(child); 
} 

Вы должны изменить его следующим образом:

// Make this method private 
private void setParent(Node<T> parent) { 
    // Remove this line to prevent the loop 
    // parent.addChild(this); 
    this.parent = parent; 
} 

public void addChild(Node<T> child) { 
    child.setParent(this); 
    this.children.add(child); 
} 
Смежные вопросы