スタックを使用してツリーの深いコピーを実現
5074 ワード
コードは次のとおりです.
他のコードはgithubに置いてあります
クリックしてください
// , 。
public BinaryTree(BinaryTree<T> p){
this(); //
LinkedStack<BinaryNode<T>> stack = new LinkedStack<BinaryNode<T>>();
LinkedStack<BinaryNode<T>> stack1 = new LinkedStack<BinaryNode<T>>();
BinaryNode<T> p1 = p.root;
BinaryNode<T> p2 = this.root;
if(p1.left==null&&p1.right==null)
p2.data = p1.data;
else {
while(p1!=null||!stack.isEmpty()) {
if(p1!=null) {
p2.data = p1.data;
//
stack1.push(p2);
stack.push(p1);
p1 = p1.left;
//p1 ,
if (p1 != null) {
BinaryNode<T> p3 = new BinaryNode<T>();
//p2
p2.left = p3;
//p2
p2 = p2.left;
}
}else {
//
p1 = stack.pop();
//
p1 = p1.right;
p2 = stack1.pop();
//p1 ,
if(p1!=null){
BinaryNode<T> p3 = new BinaryNode<T>();
p2.right = p3;
p2 = p2.right;
}
}
}
}
}
他のコードはgithubに置いてあります
クリックしてください