【LeetCode每日一题】[中等]117. 填充每个节点的下一个右侧节点指针 II
117. 填充每个节点的下一个右侧节点指针 II
题目来源
算法思想:树,递归,队列,层次遍历
题目:
java代码
class Solution {
public Node connect(Node root) {
Queue<Node> queue = new LinkedList<Node>();//队列
if(root == null) {
return root;
}
queue.offer(root);//放入root节点
//层次遍历
while (queue.size() != 0) {
int num = queue.size();//每层节点数量
for (int i = 0; i < num; i++) {
Node temp = queue.poll();//将节点拿出,
temp.next = queue.peek();//节点的next指向同层下一个结点
if(i == num - 1) {
temp.next = null;//当前层的最后一个结点,其next为null
}
if(temp.left != null) {//如果左节点不为空,将其放入队列
queue.offer(temp.left);
}
if(temp.right != null) {//如果右节点不为空,将其放入队列
queue.offer(temp.right);
}
}
}
//遍历结束,返回root
return root;
}
}