ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

算法日常・每日刷题--<队列,宽搜>1

算法日常・每日刷题--<队列,宽搜>1 429. N 叉树的层序遍历 - 力扣LeetCode429. N 叉树的层序遍历 - 给定一个 N 叉树返回其节点值的层序遍历。即从左到右逐层遍历。树的序列化输入是用层序遍历每组子节点都由 null 值分隔参见示例。 示例 1[https://assets.leetcode.com/uploads/2018/10/12/narytreeexample.png]输入root [1,null,3,2,4,null,5,6]输出[[1],[3,2,4],[5,6]]示例 2[https://assets.leetcode.com/uploads/2019/11/08/sample_4_964.png]输入root [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]] 提示 * 树的高度不会超过 1000 * 树的节点总数在 [0, 104] 之间https://leetcode.cn/problems/n-ary-tree-level-order-traversal/题目描述给定一个 N 叉树返回其节点值的层序遍历。即从左到右逐层遍历。树的序列化输入是用层序遍历每组子节点都由 null 值分隔。解题思路本质BFS 广度优先搜索队列实现层序遍历二叉树层序遍历我们每次只压入左、右孩子N 叉树一个节点可以有多个子节点直接遍历children数组把所有子节点全部入队列。利用队列的特性每一轮循环开始记录当前队列大小szsz就是当前这一层节点的总个数。循环sz次逐个取出本层节点保存节点值再把它所有子节点入队。一轮结束就收集完一整层结果。将每层结果存入最终二维数组直到队列为空遍历结束。/* // Definition for a Node. class Node { public: int val; vectorNode* children; Node() {} Node(int _val) { val _val; } Node(int _val, vectorNode* _children) { val _val; children _children; } }; */ class Solution { public: vectorvectorint levelOrder(Node* root) { vectorvectorintret; queueNode* q; int n0; if(rootnullptr) return ret; q.push(root); n; while(q.size()) { int szq.size(); vectorint tmp; for(int i0;isz;i) { Node*t q.front(); q.pop(); tmp.push_back(t-val); for(auto child:t-children) { if(child!nullptr) { q.push(child); } } } ret.push_back(tmp); } return ret; } };
返回列表