有人可以将我指向标准,经过测试,简单的树在Java中的实现?
例如,Java树上的所有stackoverflow搜索导致此主题,Java(根,父母和孩子)的树木实施
,但是随后您发现该主题中接受的答案不起作用,并且给出了溢出异常(https://stackoverflow.com/a/40622616/1005607) - 非常危险,也许有人应该删除或编辑该回答或至少向下移动。
有一些非堆栈流资源,但我再次不知道它们有多可靠,http://programTalk.com/java/java-tree-implementation/
我很难相信我们可以迅速进行可重复使用的强大实现。节点应该跟踪其父母和孩子。应该没有错误。
您显示的问题的问题(https://stackoverflow.com/a/40622616/1005607)是方法addChild
和setParent
在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);
}