深さ優先探索(DFS)テーマ別-199。右ビューバイナリーツリー(二分木右側面図)のLeetcode
問題解決の深さ優先探索の詳細、クリックしてください
独自の右側に立って想像するバイナリツリー、所与のノードの戻り値の端部の上から順番に右側から見ることができます。
例:
入力:[1,2,3、、5、NULL 、NULL 4] 出力:[1、3、4] 説明: 1 <--- / \ 23 <--- \ \ 54 <---
分析:
各行ANS年にまで各行の値を保存し、最終的には最後のもの。
ACコード:
/ ** *バイナリツリーノードの定義。 *公共のクラスのTreeNode { * int型のval; *のTreeNodeは左。 *ツリーノードを右。 *ツリーノード(INT X){ヴァル= X。} *} * / クラスソリューション{ リスト <リスト<整数>> TEMP = 新規のArrayList <> (); 公共の一覧<整数> rightSideView(TreeNodeのルート){ 場合(ルート== nullを)返す 新しいのArrayList <Integer型> (); DFS(ルート、 0 ); 一覧 <整数> ANS = 新しいのArrayList <>(); 以下のために(int型 i = 0; i)は(temp.sizeを<; iは++ ){ リスト <整数>リスト= temp.get(I)。 ans.add(list.get(はlist.size() -1 ))。 } 戻りANS。 } 公共 ボイド DFS(ツリーノードのノード、int型の深さ){ 場合(ノード== NULL ){ 返します。 } であれば(temp.size()== 深さ){ temp.add(新規のArrayList <> ()); } temp.get(深さ).add(node.val)。 DFS(node.left、深 +1) DFS(node.right、深さ +1 )。 } }