[LC] 513検索左下の木値

バイナリツリーを考えると、ツリーの最後の行の左端の値を見つけます。

例1:

入力:

    2 
   / \ 
  1 3 

出力:
1

 

例2: 

入力:

        1 
       / \ 
      2 3 
     / / \ 
    4 5 6 
       / 
      7 

出力:
7

 

注:ツリーをとることができる(すなわち、与えられたルートノード)がNULLではありません。

 

解決策1:

DFS、予約限定!

/ ** 
 *バイナリツリーノードの定義。
 *公共のクラスのTreeNode { 
 * int型のval; 
 *のTreeNodeは左。
 *ツリーノードを右。
 *ツリーノード(INT X){ヴァル= X。} 
 *} 
 * / 
クラスソリューション{
     int型の高さ= 0 int型のres = 0 ;
    公共 INT findBottomLeftValue(ツリーノードのルート){ 
        ヘルパー(根、 1 )。
        リターンのres; 
    } 
    
    プライベート ボイドヘルパー(ツリーノードのルート、INT 深さ){
         場合(ルート== NULL){
             返します
        } 
        であれば(高さ< 深さ){ 
            高さ = 深。
            RES = root.val。
        } 
        ヘルパー(root.left、深さ + 1 )。
        ヘルパー(root.right、深さ + 1 )。
    } 
}

 

解決策2:

BFS

/ ** 
 *バイナリツリーノードの定義。
 *公共のクラスのTreeNode { 
 * int型のval; 
 *のTreeNodeは左。
 *ツリーノードを右。
 *ツリーノード(INT X){ヴァル= X。} 
 *} 
 * / 
クラスソリューション{
     公共 のint findBottomLeftValue(ツリーノードのルート){ 
        キュー <ツリーノード>キュー= 新しい LinkedListの<> ();
        int型のres = 0 ; 
        queue.offer(ルート)。
        一方、(!queue.isEmpty()){ 
            ツリーノードCUR = queue.poll()。
            RES =cur.val;
            もし(!cur.right = ヌル){ 
                queue.offer(cur.right)。
            } 
            であれば(cur.left!= NULL ){ 
                queue.offer(cur.left)。
            } 
        } 
        戻りRES。
    } 
}

おすすめ

転載: www.cnblogs.com/xuanlu/p/12151456.html