当前位置 : 主页 > 编程语言 > java >

使用栈实现二叉树的深拷贝

来源:互联网 收集:自由互联 发布时间:2021-06-28
BinaryTree.java //拷贝构造,非递归实现。 public BinaryTree(BinaryTree p){ this(); //构造空二叉树 LinkedStack stack = new LinkedStack (); LinkedStack stack1 = new LinkedStack (); BinaryNode p1 = p.root; BinaryNode p2 = this.
BinaryTree.java
//拷贝构造,非递归实现。
    public BinaryTree(BinaryTree
 
   p){

        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; } } } } }
           
          
         
        
       
      
     
    
   
  
 
网友评论