我在java中实现了一个“第一个孩子下一个兄弟”树的类。
这是代表这种树的链接
http://www.cs.utexas.edu/~novak/cs315116.html
我已经实现了以下功能:
addChild();
getLabel();
setLabel(T v);
getParent();
getNextSibling();
getFirstChild();
我的 addChild 函数按以下顺序添加孩子。
public void addChild(Tree<T> c) {
c.parent = this;
if (firstChild == null)
firstChild = c;
else {
c.nextSibling = firstChild;
firstChild = c;
}
}
That is, if we have a tree node 1 and we add tree node 2 and then tree node 3 to it then the final tree would be,
1.addChild(2);
1.addChild(3);
1 1
/ \ which is internally stored as /
3 2 3 - 2
The most recent child added would be the first child
我想实现一个 CopyTree 函数,当给定任何这样的树作为参数时,它将创建树的副本并返回它。我有一些初始代码,但我无法获得正确的递归。
private Tree<String> CopyTree(Tree<String> tr){
if (tr == null)
return null;
Tree<String> t = new Tree<String>();
t.setLabel(tr.getLabel());
if (tr.getFirstChild() != null) {
t.addChild(CopyTree(tr.getFirstChild()));
}
Tree<String> temp = tr.left();
if (temp != null) {
while (temp.getNextSibling() != null) {
t.addChild(CopyTree(temp.getNextSibling()));
temp = temp.getNextSibling();
}
}
return t;
}
怎么做才能使递归工作?
提前致谢