Java树数据结构实现



有人可以将我指向标准,经过测试,简单的树在Java中的实现

例如,Java树上的所有stackoverflow搜索导致此主题,Java(根,父母和孩子)的树木实施

,但是随后您发现该主题中接受的答案不起作用,并且给出了溢出异常(https://stackoverflow.com/a/40622616/1005607) - 非常危险,也许有人应该删除或编辑该回答或至少向下移动。

有一些非堆栈流资源,但我再次不知道它们有多可靠,http://programTalk.com/java/java-tree-implementation/

我很难相信我们可以迅速进行可重复使用的强大实现。节点应该跟踪其父母和孩子。应该没有错误。

您显示的问题的问题(https://stackoverflow.com/a/40622616/1005607)是方法addChildsetParent在Infinite Loop中互相调用。/p>

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);
}

最新更新