BinaryTree.java //拷贝构造,非递归实现。 public BinaryTree(BinaryTree p){ this(); //构造空二叉树 LinkedStack stack = new LinkedStack (); LinkedStack stack1 = new LinkedStack (); BinaryNode p1 = p.root; BinaryNode p2 = this.
//拷贝构造,非递归实现。 public BinaryTree(BinaryTreep){ this(); //构造空二叉树 LinkedStack > stack = new LinkedStack >(); LinkedStack > stack1 = new LinkedStack >(); BinaryNode p1 = p.root; BinaryNode 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 p3 = new BinaryNode (); //p2左结点为新的结点 p2.left = p3; //p2指向左结点 p2 = p2.left; } }else { //结点出栈 p1 = stack.pop(); //指向右结点 p1 = p1.right; p2 = stack1.pop(); //p1结点不为空,则构建新结点 if(p1!=null){ BinaryNode p3 = new BinaryNode (); p2.right = p3; p2 = p2.right; } } } } }