题目给定的树是一个完美二叉树,即除去叶子节点外均有左右两个节点,对于这个树型结构,不仅包含val,左右节点,还有一个指向其右侧节点的指针next,初始时所有next指针均指向null,题目需要的就是我们将满足条件的next指针指向其右侧节点。
因为一个节点的右侧节点和它是同一层的,所以使用BFS的方式对这棵树进行遍历,只要该节点不是它所属的这一层的最右边一个节点,就将其next指针指向右边的那个节点。
思路有了,动手写代码,AC代码如下:
class Solution {
public:
Node* connect(Node* root) {
if(root == nullptr) {
return root;
}
queue<Node*> tmp;
tmp.push(root);
while(!tmp.empty()) {
int size = tmp.size();
for(int i=0;i<size;i++) {
Node* node = tmp.front();
tmp.pop();
if(i < size - 1) {
node->next = tmp.front();
}
if(node->left) {
tmp.push(node->left);
}
if(node->right) {
tmp.push(node->right);
}
}
}
return root;
}
};