友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。
公众号的微信号是: jikerizhi 。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
513. Find Bottom Left Tree Value
Given a binary tree, find the leftmost value in the last row of the tree.
Example 1:
Input:
2
/ \
1 3
Output:
1
Example 2:
Input:
1
/ \
2 3
/ / \
4 5 6
/
7
Output:
7
Note: You may assume the tree (i.e., the given root node) is not NULL.
思路分析
常规思路是广度优先,记录每一层第一个节点的值。
看社区讨论,可以在广度优先的基础上做个优化:通常在队列里面先放左节点,再放右节点。反转一下,先放右节点,再放左节点,那么最后一个节点就是需要的节点。
广度优先比较熟悉,尝试了一下深度优先的解法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int curHeight = 0;
int curValue = 0;
/**
* 尝试一下深度优先
*/
public int findBottomLeftValue(TreeNode root) {
dfs(root, 0);
return curValue;
}
private void dfs(TreeNode root, int height) {
if (root == null) {
return;
}
height++;
dfs(root.left, height);
dfs(root.right, height);
if (height > curHeight) {
curHeight = height;
curValue = root.val;
}
}