题目
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
答案:
/**前序遍历
* @param {TreeNode} root
* @return {number}
*/
var findBottomLeftValue = function(root) {
let maxLevel = -1;// 当前层级
let value = 0; // 默认值
var dfs = function(root, level){
if(!root) return null;
if(level > maxLevel){// 判断是否是最大层级,只更新同层最左边的数
maxLevel = level
value = root.val
}
dfs(root.left, level + 1)
dfs(root.right, level + 1)
}
dfs(root, 0)
return value
};
/** 层序遍历
* @param {TreeNode} root
* @return {number}
*/
var findBottomLeftValue = function(root) {
if(!root) return null;
const level = [root];//初始层
let mostLeft = null;
while(level.length > 0){
let curLevelSize = level.length; // 当前 层 的个数
//因为是层序遍历,所以每次层的level的第一个必然是最左边的节点
mostLeft = level[0];
for(let i = 0; i < curLevelSize; i++){
const curNode = level.shift();//删除数组的第一个元素,并返回被删除的(即第一个元素)内容。
curNode.left && level.push(curNode.left)
curNode.right&& level.push(curNode.right)
}
}
return mostLeft.val
};
来源:力扣(LeetCode)