Node* connect(Node* root) {
if(root==NULL){
return root;
}
queue<Node*> q;
q.push(root);
while(!q.empty()){
int size=q.size();
for(int i=0;i<size;i++){
Node* n=q.front();
q.pop();
if (i < size - 1) {
n->next = q.front();
}
if (n->left != nullptr) {
q.push(n->left);
}
if (n->right != nullptr) {
q.push(n->right);
}
}
}
return root;
}
## 层次遍历输出节点值,看成BFS
```c++
queue<TreeNode*> q;
vector<int> ans;
vector<int> levelOrder(TreeNode* root) {
if(root == NULL){
return ans;
}
q.push(root);
while(!q.empty()){
TreeNode* curr=q.front();
q.pop();
ans.push_back(curr->val);
if(curr->left != NULL){
q.push(curr->left);
}
if(curr->right != NULL){
q.push(curr->right);
}
}
return ans;
}
每一层分别输出,每次记录层的数量
vector<vector<int>> ans;
vector<vector<int>> levelOrder(TreeNode* root) {
if(root == NULL){
return ans;
}
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
int levelLen=q.size();
cout<<levelLen<<" ";
vector<int> v;
for(int i=0;i<levelLen;i++){
TreeNode* curr=q.front();
if(curr->left != NULL){
q.push(curr->left);
}
if(curr->right != NULL){
q.push(curr->right);
}
v.push_back(curr->val);
q.pop();
}
ans.push_back(v);
}
return ans;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律