给一颗完全二叉树的每个节点添加右指针
递归:
public Node connect(Node root) {
if(root == null)
return null;
if(root.left != null){
root.left.next = root.right;
if(root.next != null)
root.right.next = root.next.left;
}
connect(root.left);
connect(root.right);
return root;
}
非递归:
public Node connect(Node root) {
Node level_start = root;
while (level_start != null) {
Node cur = level_start;
while (cur != null) {
if (cur.left != null) cur.left.next = cur.right;
if (cur.right != null && cur.next != null) cur.right.next = cur.next.left;
cur = cur.next;
}
level_start = level_start.left;
}
return root;
}