博客
关于我
算法——102、二叉树的层序遍历(力扣)
阅读量:627 次
发布时间:2019-03-14

本文共 1189 字,大约阅读时间需要 3 分钟。

分享了一段关于二叉树广度优先搜索的代码片,这段代码实现了层序遍历,并将每一层的节点值收集到一个向量中。以下是优化后的代码片及其详细解释:

#include 
#include
#include
/* 二叉树的层序遍历(宽度优先搜索)实现 */vector
levelOrder(TreeNode *root) { queue
q; vector
result; vector
currentLevel; if (!root) return result; q.push(root); while (!q.empty()) { int levelSize = q.size(); currentLevel.clear(); for (int i = 0; i < levelSize; ++i) { TreeNode *node = q.front(); q.pop(); currentLevel.push_back(node->val); if (node->left) { q.push(node->left); } if (node->right) { q.push(node->right); } } result.push_back(currentLevel); } return result;}

代码解析:

  • 初始化队列和结果容器:

    • queue<TreeNode *> q; 用于实现广度优先搜索,按层处理每个节点。
    • vector<int> result; 用于存储最终的层序遍历结果。
    • vector<int> currentLevel; 用于存储当前处理层的节点值,避免直接操作结果向量,确保每层完整收集。
  • 检查根节点是否存在:

    • 若根节点不存在,立即返回空结果向量。
  • 主循环实现广度优先搜索:

    • 层处理:while 循环中,当前队列大小决定当前层的节点数量。
    • 节点遍历: 使用 for 循环逐个处理队列中的每个节点 node。
    • 节点处理: 将节点值加入当前层的 currentLevel,检查并添加其左右子节点到队列中以便处理下一层。
  • 收集层结果:

    • 每处理完一层,将 currentLevel 添加到最终结果中。
  • 优化说明:

    • 清晰的变量命名: 使用 result 表示最终结果, currentLevel 表示当前处理层的节点值,命名清晰易懂。
    • 结构优化: 逐步处理队列中的每个节点,确保层序遍历的正确性。
    • 代码可读性: 通过适当的变量命名和循环结构,使代码逻辑清晰,便于理解和维护。

    转载地址:http://ifeoz.baihongyu.com/

    你可能感兴趣的文章
    初次安装webpack之后,提示安装webpack-cli
    查看>>
    Java后端服务明显变慢诊断思路
    查看>>
    idea选中文件时左侧菜单自动定位到文件所在位置
    查看>>
    java中带参数的try(){}语法——关闭资源
    查看>>
    JSuite 最新版下载试用2021版本
    查看>>
    使用FileZilla,FTP登录出现错误:FileZilla状态: 不安全的服务器,不支持 FTP over TLS
    查看>>
    Python模块学习--uuid
    查看>>
    kafka+storm+hbase整合试验(Wordcount)
    查看>>
    VMware克隆虚拟机后重启network失败
    查看>>
    Hbase压力测试
    查看>>
    Python GIL全局解释器锁
    查看>>
    在IDEA中用jdbc技术通过配置文件连接mysql数据库连接池
    查看>>
    StreamReader & StreamWriter
    查看>>
    C#中的类、方法和属性
    查看>>
    Python入门基础知识点讲解:输入和输出
    查看>>
    Python爬取清朝末年医书:《醉花窗医案》,看看病症情况
    查看>>
    Python爬虫训练:爬取酷燃网视频数据
    查看>>
    Python新一代数据可视化神器:Plotly动画展示
    查看>>
    Python数据分析入门(十九):绘制散点图
    查看>>
    springboot所有配置文件全部失效,不显示Idea Error: Module not specified;
    查看>>