题目链接
填充每个节点的下一个右侧节点指针
题目描述
注意点
- 给定一个 完美二叉树
解答思路
- 广度优先遍历一层层的遍历二叉树,将每一层节点的next指针都指向右侧节点
代码
class Solution {
public Node connect(Node root) {
if (root == null) {
return null;
}
Deque<Node> deque = new ArrayDeque<>();
deque.addLast(root);
while (!deque.isEmpty()) {
int n = deque.size();
Node currNode = new Node();
for (int i = 0; i < n; i++) {
Node nextNode = deque.removeFirst();
currNode.next = nextNode;
if (nextNode.left != null) {
deque.addLast(nextNode.left);
}
if (nextNode.right != null) {
deque.addLast(nextNode.right);
}
currNode = nextNode;
}
}
return root;
}
}
关键点
- 广度优先遍历的思想
- 注意每层第一个节点和最后一个节点的判断,防止空指针异常