关于树的的算法常见的解决方式是递归和迭代,掌握了层序遍历,就能解决很多树算法问题了,比如右侧树、每层最大之类,也很好理解,分享一道在每个树行中找最大值
/*
* @lc app=leetcode.cn id=515 lang=javascript
*
* [515] 在每个树行中找最大值
*/
// @lc code=start
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var largestValues = function(root) {
if(!root) return []
let arr = [root],res=[],max=-Infinity;
while(arr.length>0){//通过队列遍历每一层节点
let len = arr.length//存储每层的节点个数
for(let i=0;i<len;i++){//for循环控制当前层节点执行完执行下一层
let item = arr.shift();
max = Math.max(max,item.val)
if(item.left) arr.push(item.left)
if(item.right) arr.push(item.right)
}
res.push(max)
max=-Infinity
}
return res
};
// @lc code=end
复制代码