前言
数据结构与算法属于开发人员的内功,不管前端技术怎么变,框架怎么更新,版本怎么迭代,它终究是不变的内容。 始终记得在参加字节青训营的时候,月影老师说过的一句话,不要问前端学不学算法。计算机学科的每一位都有必要了解算法,有
写出高质量代码的潜意识
。
一、问题描述
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
示例 1:
输出:[[1],[3,2,4],[5,6]]
示例 2:
输入: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, 10^4] 之间
二、思路讲解
层次遍历就是要一层一层的遍历,而我们都知道递归是一种解决到底然后再去解决其它问题的特点,也就是在深度。
- 遍历第一层节点,存入数组
- 遍历第二层节点,存入数组
- ...
- 遍历完所有层的节点,将结果返回 存放的结果第一次进来的时候初始化一个数组,那我们采用什么样的方式去记录层级呢?
- 很简单,只需要使用一个index,每次递归的时候去让index+1就可以得到不同层级的节点
var levelOrder = function(root) { const res = [] const dfs = (root,index)=>{ if(!root) return if(!res[index]){ res[index] = [] // 该层节点首次进来,初始化操作 } res[index].push(root.val) for(const child of root.children){ // 递归其子节点 dfs(child,index +1) } } dfs(root,0) return res };
后续
- 地址: 二叉树的层序遍历
好了,本篇 力扣-二叉树的层序遍历
到这里就结束了,我是邵小白,一个热爱技术、热爱生活、拒绝996的前端小白,欢迎👍评论。