Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
前言
数据结构与算法属于开发人员的内功,不管前端技术怎么变,框架怎么更新,版本怎么迭代,它终究是不变的内容。 始终记得在参加字节青训营的时候,月影老师说过的一句话,不要问前端学不学算法。计算机学科的每一位都有必要了解算法,有
写出高质量代码的潜意识。
一、问题描述
给定一个 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的前端小白,欢迎👍评论。