写点什么

LeetCode 题解:515. 在每个树行中找最大值,DFS,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2020 年 12 月 11 日
LeetCode题解:515. 在每个树行中找最大值,DFS,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/



解题思路:



  1. 用递归实现DFS遍历二叉树的所有节点。

  2. 开始递归前要思考,当前递归函数运行的是第n次递归,那么当前要做哪些处理。

  3. 先考虑的是,假设此时遍历到了最后一个节点为null,要给递归设置终止条件。

  4. 该题要求查找当前层的最大值,因此需要一个level索引标识当前所在的层,并且在遍历的过程中不断对比取最大值。

  5. 在遍历下一层节点时,将index+1,作为下一层的标识。



/**
* @param {TreeNode} root
* @return {number[]}
*/
var largestValues = function (root) {
let result = []; // 存储每一行的最大值
// 使用BFS进行遍历,再通过每一层的索引,生成每一层的最大值数据
function bfs(node, level) {
// 递归终止条件
// 如果当前节点不存在,则退出递归
if (!node) {
return;
}
// 将当前节点的值,与已存储的值相比,取最大值
typeof result[level] === 'number'
? (result[level] = Math.max(node.val, result[level]))
: (result[level] = node.val);
// 计算下一层的标识
const newLevel = level + 1;
// 遍历子节点,并传入下一层的索引
bfs(node.left, newLevel);
bfs(node.right, newLevel);
}
// 从根节点开始遍历,对应索引为0
bfs(root, 0);
return result;
};



发布于: 2020 年 12 月 11 日阅读数: 16
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:515. 在每个树行中找最大值,DFS,JavaScript,详细注释