深さ優先探索(DFS)テーマ別-199。右ビューバイナリーツリー(二分木右側面図)のLeetcode

深さ優先探索(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 )。
    } 
}

 

おすすめ

転載: www.cnblogs.com/qinyuguan/p/11367057.html