LeetCode:Populating Next Right Pointers in Each Node II

Populating Next Right Pointers in Each Node II


Total Accepted: 63428 
Total Submissions: 192670 
Difficulty: Hard
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

Subscribe to see which companies asked this question
Hide Tags
 
Tree Depth-first Search
Hide Similar Problems
 
(M) Populating Next Right Pointers in Each Node
java code:
/**
 * Definition for binary tree with next pointer.
 * public class TreeLinkNode {
 *     int val;
 *     TreeLinkNode left, right, next;
 *     TreeLinkNode(int x) { val = x; }
 * }
 */
public class Solution {
    public void connect(TreeLinkNode root) {
        
        TreeLinkNode cur = root; //  
        TreeLinkNode nextLevelHead = null; //  
        TreeLinkNode prev = null; //  
        
        while(cur != null) {
            
            while(cur != null) {
                if(cur.left != null) {
                    if(prev != null)
                        prev.next = cur.left;
                    else
                        nextLevelHead = cur.left;
                    prev = cur.left;
                }
                
                if(cur.right != null) {
                    if(prev != null)
                        prev.next = cur.right;
                    else
                        nextLevelHead = cur.right;
                    prev = cur.right;
                }
                cur = cur.next;
            }
            
            //  
            cur = nextLevelHead;
            nextLevelHead = null;
            prev = null;
        }
    }
}

좋은 웹페이지 즐겨찾기