需要在二叉树的每一行中找到最大的值
输入:
1 / \ 3 2 / \ \ 5 3 9
输出: [1, 3, 9]
/** * @param {TreeNode}root * @return {number[]} */ let largestValues = function(root){ if(!root) return [] let queue = [root] let maximums = [] while(queue.length){ let max = Number.MIN_SAFE_INTEGER; // 这里需要先缓存length 这个length代表当前层级的所有节点 // 在循环开始后 会push新的节点 length就不稳定了 let len = queue.length; for(let i = 0; i<len;i++){ let node = queue[i] max = Math.max(node.val,max) if(node.left){ queue.push(node.left) } if(node.right){ queue.push(node.right) } } // 本层级处理完毕 截取掉 for(let i = 0; i<len;i++){ queue.shift() } // 这个for循环结束后 代表当前层级的节点全部处理完毕 // 直接把计算出来的最大值push到数组里面即可 maximums.push(max) } return maximums }