博客
关于我
leetcode——第429题——N叉树的层序遍历
阅读量:540 次
发布时间:2019-03-09

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

题目:给定一个 N 叉树,返回其节点值的层序遍历。(从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

解决方案:实现对任意 N 叉树的层序遍历,按照给定格式返回各层节点的值。具体方法如下:

  • 初始化队列:使用一个队列来存储当前层的节点。
  • 处理根节点:如果根节点不为空,将其加入队列。
  • 循环处理:while 队列不为空,逐层处理节点。
    • 记录当前层节点数量:获取队列中节点的数量,作为当前层的节点总数。
    • 创建结果列表:初始化当前层的结果列表。
    • 遍历队列:逐个处理队列中的节点,提取其值。
    • 处理子节点:递归地将每个节点的子节点加入下一层队列。
  • 返回结果:将每层的结果按顺序存储,并最终返回完整结果。
  • 测试示例:假设输入为 1,null,2,null,3,则输出应为:

    1

    2

    3

    完整代码如下:

    #include 
    #include
    using namespace std;vector
    levelOrder(Node* root) { vector
    result; queue
    que; if (root != nullptr) { que.push(root); } while (!que.empty()) { int size = que.size(); vector
    level; for (int i = 0; i < size; i++) { Node* node = que.front(); que.pop(); level.push_back(node->val); for (size_t j = 0; j < node->children.size(); j++) { if (node->children[j] != nullptr) { que.push(node->children[j]); } } } result.push_back(level); } return result;}

    如需更详细说明或示例,请随时联系。

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

    你可能感兴趣的文章
    不编译只打包system或者vendor image命令
    查看>>
    Linux系统版本控制历史
    查看>>
    HTML、CSS、JS文件加载顺序及执行情况
    查看>>
    MySQL
    查看>>
    The wxWindows Library Licence (WXwindows)
    查看>>
    linux centos7 gcc4.85 升级到gcc7.4.0
    查看>>
    十一届省赛总结
    查看>>
    leetcode——第203题——虚拟头结点
    查看>>
    leetcode——第1047题——删除字符串中的相邻重复子串
    查看>>
    leetcode——第101题——对称二叉树
    查看>>
    leetcode——第108题——将有序数组转换为二叉搜索树
    查看>>
    王者荣耀英雄简介-2
    查看>>
    计算机主机网关的作用是什么?
    查看>>
    高等数学第七版 上册 第一章 函数与极限1
    查看>>
    JVM调优实战
    查看>>
    【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
    查看>>
    【刷题】P94剑指offer:动态规划与贪婪算法:面试题14:剪绳子
    查看>>
    Java——for语句一些简单的应用
    查看>>
    每日总结2021.4.21(补)
    查看>>
    每日总结2021.4.22
    查看>>