Skip to content

Commit 17abfef

Browse files
committed
ok
1 parent 1404882 commit 17abfef

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/com/leetcode/Main199.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.leetcode;
2+
3+
import java.util.*;
4+
5+
/**
6+
* 二叉树的右视图
7+
*/
8+
public class Main199 {
9+
public class TreeNode {
10+
int val;
11+
TreeNode left;
12+
TreeNode right;
13+
TreeNode(int x) { val = x; }
14+
}
15+
public List<Integer> rightSideView(TreeNode root) {
16+
Map<Integer, Integer> rightmostValueAtDepth = new HashMap<Integer, Integer>();
17+
int max_depth = -1;
18+
19+
Queue<TreeNode> nodeQueue = new LinkedList<TreeNode>();
20+
Queue<Integer> depthQueue = new LinkedList<Integer>();
21+
nodeQueue.add(root);
22+
depthQueue.add(0);
23+
24+
while (!nodeQueue.isEmpty()) {
25+
TreeNode node = nodeQueue.remove();
26+
int depth = depthQueue.remove();
27+
28+
if (node != null) {
29+
// 维护二叉树的最大深度
30+
max_depth = Math.max(max_depth, depth);
31+
32+
// 由于每一层最后一个访问到的节点才是我们要的答案,因此不断更新对应深度的信息即可
33+
rightmostValueAtDepth.put(depth, node.val);
34+
35+
nodeQueue.add(node.left);
36+
nodeQueue.add(node.right);
37+
depthQueue.add(depth+1);
38+
depthQueue.add(depth+1);
39+
}
40+
}
41+
List<Integer> rightView = new ArrayList<Integer>();
42+
for (int depth = 0; depth <= max_depth; depth++) {
43+
rightView.add(rightmostValueAtDepth.get(depth));
44+
}
45+
46+
return rightView;
47+
}
48+
}

0 commit comments

Comments
 (0)