题目:
给定一个二叉树:
struct Node { int val; Node *left; Node *right; Node *next; }
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL
。
初始状态下,所有 next 指针都被设置为 NULL
。
解答:
代码:
/*
// Definition for a Node.
class Node {
public int val;
public Node left;
public Node right;
public Node next;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, Node _left, Node _right, Node _next) {
val = _val;
left = _left;
right = _right;
next = _next;
}
};
*/
class Solution {
public Node connect(Node root) {
if(root==null){
return null;
}
Queue<Node> queue=new ArrayDeque<Node>();
queue.offer(root);
while(!queue.isEmpty()){
int n=queue.size();
Node last=null;
for(int i=1;i<=n;i++){
Node f=queue.poll();
if(f.left!=null){
queue.offer(f.left);
}
if(f.right!=null){
queue.offer(f.right);
}
if(i!=1){
last.next=f;
}
last=f;
}
}
return root;
}
}