LeetCode 513. Find Bottom Left Tree Value

用户头像
liu_liu
关注
发布于: 2020 年 05 月 16 日
LeetCode 513. Find Bottom Left Tree Value

@(LeetCode)



问题描述



给定一个二叉树,找出最后一层最左节点的值。



栗 1:

输入:

2
/ \
1 3

输出:
1



栗 2:

输入:

1
/ \
2 3
/ / \
4 5 6
/
7

输出:
7



想看英文描述的戳这里



注意:假定树的根节点不可能为空。



解题思路



这道题思路比较简单。



要想求出最后一层的最左节点值,只需按层从左往右遍历,并将最后一层节点保存下来,取第一个节点值即可。



js 代码如下:

var findBottomLeftValue = function (root) {
if (root) {
// 当前需要遍历节点
let list = []
list.push(root)

while (list.length > 0) {
// 存储下一层数据
let tmp = []
// 逐个遍历,取下一层节点
let i = 0
while (i < list.length) {
const node = list[i]

// 压入左子树
if (node.left) {
tmp.push(node.left)
}

// 压入右子树
if (node.right) {
tmp.push(node.right)
}

i += 1
}

// 把下一层数据赋值给 list
if (tmp.length > 0) {
list = tmp
} else {
break
}
}

// 取最后一层的第一个数据
if (list.length > 0) {
const node = list[0]
return node.val
}
}

return null
};



其实还有另外一种方法,也是层遍历,只不过是从右往左。记录最后取出的节点值,即为最后一层的最左节点。



js 代码如下:

var findBottomLeftValue = function (root) {
if (root) {
let list = []
list.push(root)

// 记录取出的节点
let node

while (list.length > 0) {

// 取第一个元素
node = list.shift()

// 压入右子树
if (node.right) {
list.push(node.right)
}

// 压入左子树
if (node.left) {
list.push(node.left)
}
}

return node.val
}

return null
};



本文同步发表在简书:https://www.jianshu.com/p/d3efd992a07a

发布于: 2020 年 05 月 16 日 阅读数: 29
用户头像

liu_liu

关注

不要相信自己的记忆力 2017.11.13 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode 513. Find Bottom Left Tree Value