给定一个二叉树
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
进阶:
你只能使用常量级额外空间。
使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
class Solution {
public Node connect(Node root) {
if(root==null) return root;
if(root.left!=null)
{
if(root.right!= null)
root.left.next=root.right;
else root.left.next=getNext(root.next);
}
if(root.right!=null)
root.right.next=getNext(root.next);
connect(root.right);
connect(root.left);
return root;
}
public Node getNext(Node root) {
while (root!=null)
{
if(root.left!=null)
return root.left;
if(root.right!=null)
return root.right;
root=root.next;
}
return null;
}
}