前端就该用 JS 刷算法26

145 阅读1分钟

每日一题 -- 树 | 堆

513. 找树左下角的值

513. 找树左下角的值

分析

  • 使用 bfs 遍历到最后一层
  • 重点是需要找到判断每一层最左边值的方法,这里是用每次重新进入队列时的 level 和进入 level 处理层节点时 curLevel 存在值不一样,来判断每一层第一个节点
// https://leetcode-cn.com/problems/find-bottom-left-tree-value/
// 513. 找树左下角的值


/**
 * 用 BFS 来解决
 */
var findBottomLeftValue = function(root) {
    if(!root) return root
    const queue = []
    queue.push(root)
    let res = undefined
    let level = 0; // 当前层数,作为判断每一行的首个值
    let curLevel = 0 ;
    while(queue.length){
        let len = queue.length
        level++
        // 每一行的处理
        while(len--){
            const root = queue.shift() // 弹出一个值
            if(level !== curLevel){
                // 第一次进这一行的队列
                curLevel = level
                res = root.val
            }
            if(root.left) queue.push(root.left)
            if(root.right) queue.push(root.right)
        }
    }
    return res
};