Populating Next Right Pointers in Each Node I or II

2879 단어 right
Follow up for problem "Populating Next Right Pointers in Each Node".
What if the given tree could be any binary tree? Would your previous solution still work?
Note:
  • You may only use constant extra space.

  •  
    For example,Given the following binary tree,
             1
    
           /  \
    
          2    3
    
         / \    \
    
        4   5    7
    
    

     
    After calling your function, the tree should look like:
             1 -> NULL
    
           /  \
    
          2 -> 3 -> NULL
    
         / \    \
    
        4-> 5 -> 7 -> NULL

    나 옛날에 왜 그렇게 복잡했지?
    ref http://www.cnblogs.com/springfor/p/3889327.html
    관건은 효과적인 다음 P를 찾는 것이다
     public void connect(TreeLinkNode root) {  
    
            if (root == null) 
    
                return;  
    
      
    
            TreeLinkNode p = root.next;  
    
            while(p!=null){
    
                if(p.left!=null){
    
                    p = p.left;
    
                    break;
    
                }
    
                if(p.right!=null){
    
                    p = p.right;
    
                    break;
    
                }
    
                p = p.next;
    
            }
    
            if(root.right!=null)
    
                root.right.next = p;
    
            if(root.left!=null){
    
                if(root.right!=null){
    
                    root.left.next = root.right;
    
                }else
    
                    root.left.next =p;
    
            }
    
      
    
            connect(root.right);
    
            connect(root.left);
    
        }

    좋은 웹페이지 즐겨찾기