# Populating Next Right Pointers in Each Node II （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



【题意】

如果有右孩子，则使其next为右孩子，否则为null，但是本身是任意二叉树不满足是满二叉树

【分析】

【实现】

/**
* Definition for binary tree with next pointer.
*     int val;
*     TreeLinkNode(int x) { val = x; }
* }
*/
public class Solution {
if (root == null){
return;
}

// 找到与root同一行的next node
TreeLinkNode next = null;       // 下一个被连接的对象

// rootNext如果是null说明已经处理完这一层的所有node
// next不等于null说明找到了找到最左边的下一个被连接的对象
while (rootNext != null && next == null)
{
if (rootNext.left != null){ // 优先找左边
next = rootNext.left;
} else{
next = rootNext.right;
}
rootNext = rootNext.next;
}

if (root.left != null)
{
if (root.right != null){    //  内部相连
root.left.next = root.right;
}else{                      // 跨树相连
root.left.next = next;
}
}
if (root.right != null){        // 跨树相连
root.right.next = next;
}

connect(root.right);        // 要先让右边都先连起来
connect(root.left);

}
}

#### 117. Populating Next Right Pointers in Each Node II Leetcode Python

2015-01-26 10:16:40

#### Populating Next Right Pointers in Each Node II 任意（非完美）二叉树添加next指针 @LeetCode

2013-11-21 04:45:02

#### Populating Next Right Pointers in Each Node -- LeetCode

2014-04-12 03:11:29

#### LeetCode 116 Populating Next Right Pointers in Each Node 解题报告

2015-03-30 20:44:13

#### Populating Next Right Pointers in Each Node II -- LeetCode

2014-04-13 09:09:24

#### LeetCode题解：Populating Next Right Pointers in Each Node

2015-10-02 21:01:47

#### Leetcode_116_Populating Next Right Pointers in Each Node

2015-02-05 19:18:29

#### 【LeetCode with Python】 Populating Next Right Pointers in Each Node

2014-07-04 16:26:33

#### LeetCode（117） Populating Next Right Pointers in Each Node II

2015-11-14 15:13:02

#### 树——populating-next-right-pointers-in-each-node（层序遍历变型）

2016-05-10 22:29:25