File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments