您的位置:首页 > Web前端 > Node.js

8 mins - Populating Next Right Pointers in Each Node II

2014-05-03 09:29 351 查看
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

/**
 * 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) {
        if (root == null) {
            return ;
        }
        
        TreeLinkNode levelHead = root;
        
        while (levelHead != null) {
            TreeLinkNode levelIt = levelHead;
            
            TreeLinkNode newLevelIt = null;
            TreeLinkNode newLevelHead = null;
            
            while (levelIt != null) {
                if (levelIt.left != null) {
                    if (newLevelIt != null) {
                        newLevelIt.next = levelIt.left;
                    }
                    
                    newLevelIt = levelIt.left;

                    if (newLevelHead == null) {
                        newLevelHead = levelIt.left;
                    }
                }
                
                if (levelIt.right != null) {
                    if (newLevelIt != null) {
                        newLevelIt.next = levelIt.right;
                    }
                    
                    newLevelIt = levelIt.right;

                    if (newLevelHead == null) {
                        newLevelHead = levelIt.right;
                    }
                }
                
                levelIt = levelIt.next;
            }
            
            levelHead = newLevelHead;
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: