题意:在树的同级结点之间建立向右的指针。
思路:和之字形遍历很像,使用BFS。
/**
* Definition for binary tree with next pointer.
* struct TreeLinkNode {
* int val;
* TreeLinkNode *left, *right, *next;
* TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
* };
*/
class Solution {
public:
void connect(TreeLinkNode *root) {
if(root == NULL) return;
vector<TreeLinkNode*> re;
re.push_back(root);
bfs(re);
return;
}
void bfs(vector<TreeLinkNode*> root) {
if(root.size() == 0) return;
for(int i = 0; i < root.size() - 1; ++ i) {
if(root[i] == NULL) continue;
root[i]->next = root[i + 1];
}
if(root[root.size() - 1] != NULL)
root[root.size() - 1]->next = NULL;
vector<TreeLinkNode*> temp;
for(int i = 0; i < root.size(); ++ i) {
if(root[i] == NULL) continue;
if(root[i]->left != NULL) temp.push_back(root[i]->left);
if(root[i]->right != NULL) temp.push_back(root[i]->right);
}
bfs(temp);
}
};

本文介绍了一种在树结构中使用广度优先搜索(BFS)来连接同一层级节点的方法。通过递归地处理每一层的节点,可以高效地完成相邻节点间的链接。
2921

被折叠的 条评论
为什么被折叠?



