找树左下角的值
描述
- 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值
- 假设二叉树中至少有一个节点
示例 1

输入: root = [2,1,3]
输出: 1
示例 2

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
提示
- 二叉树的节点个数的范围是 [1, 1 0 4 10^4 104]
- - 2 31 2^{31} 231 <= Node.val <= 2 31 2^{31} 231 - 1
Typescript 版算法实现
1 ) 方案1:深度优先搜索
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
function findBottomLeftValue(root: TreeNode | null): number {
let curVal = 0;
const dfs = (root, height) => {
if (!root) return;
height++;
dfs(root.left, height);
dfs(root.right, height);
if (height > curHeight) {
curHeight = height;
curVal = root.val;
}
}
let curHeight = 0;
dfs(root, 0);
return curVal;
};
2 ) 方案2:广度优先搜索
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
function findBottomLeftValue(root: TreeNode | null): number {
let ret = 0;
const queue = [root];
while (queue.length) {
const p = queue.shift();
if (p.right) queue.push(p.right);
if (p.left) queue.push(p.left);
ret = p.val;
}
return ret;
};