Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 156058d

Browse files
Merge pull request doocs#259 from HendSame/master
add 515 solution for java
2 parents fd38e9e + 6990456 commit 156058d

File tree

1 file changed

+35
-0
lines changed
  • solution/0500-0599/0515.Find Largest Value in Each Tree Row

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
public class Solution {
11+
// 深度遍历
12+
public List<Integer> largestValues(TreeNode root) {
13+
List<Integer> list = new ArrayList<>();
14+
dfs(list, root, 0);
15+
return list;
16+
}
17+
18+
private void dfs(List<Integer> list, TreeNode root, int level) {
19+
if (root == null) {
20+
return;
21+
}
22+
// 每深入一层,先把那一层的第一个节点加入返回 list中
23+
if (list.size() == level) {
24+
list.add(root.val);
25+
}
26+
// 此时 size > level ,那么就是开始遍历每一层 的 其他节点(不包括最左边的节点),
27+
// 直接比较list的对应下标(index)的值与当前值就好
28+
else {
29+
list.set(level, Math.max(list.get(level), root.val));
30+
}
31+
// 左右子树,深度要+1
32+
dfs(list, root.left, level + 1);
33+
dfs(list, root.right, level + 1);
34+
}
35+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /