题目
思路
- 层序遍历,将每层的最右边的下一个节点赋值为null
- 将上一个节点指向下一个节点
java
/*
// Definition for a Node.
class Node {
public int val;
public Node left;
public Node right;
public Node next;
public Node() {}
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 root;
}
Queue<Node> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()){
int size = queue.size();
Node current = null;
while (size > 0){
Node node = queue.poll();
if (node.right != null){
queue.add(node.right);
}
if (node.left != null){
queue.add(node.left);
}
node.next = current;
current = node;
size--;
}
}
return root;
}
}