LCR 045.找树左下角的值
给定一个二叉树的 根节点 root
,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
提示:
- 二叉树的节点个数的范围是
[1,104]
-231 <= Node.val <= 231 - 1
法1:
分析:
定义两个队列queue1和queue2,默认将root加入queue1,令result默认为root.val。
如果queue1不为空,则遍历:
- 将首元素出队列queue1,并将当前节点的左右孩子入队列(获取下层的节点);
- 当queue1的长度为0 的时候,表明当前层次的节点都遍历结束,更新一下queue1为下一层次节点,queue2初始为空,判断queue1是否大于0 ,有节点的话需要更新一下result。
js
var findBottomLeftValue = function(root) {
let queue1 = [];
let queue2 = [];
queue1.push(root);
let result = root.val;
while(queue1.length > 0){
let node = queue1.shift(); // 移除第一个元素
// 如果有左子节点,加入队列2
if(node.left !== null){
queue2.push(node.left);
}
if(node.right !== null){
queue2.push(node.right);
}
// 如果当前队列为空,表示当前层已处理完毕
if(queue1.length === 0){
// 当前层处理完后,交换队列
queue1 = queue2;
queue2 = [];
// 如果 queue1不为空,更新最左节点的值为当前队列的第一个节点
if(queue1.length > 0){
result = queue1[0].val;
}
}
}
return result;
};