【LC】左葉の404合計

与えられたバイナリツリー内のすべての左葉の合計を検索します。

例:

    3 
   / \ 
  9 20 
    / \ 
   15 7 

それぞれ値9および15を有するバイナリツリー内の2枚の左葉があります。戻る24. 

ソリューション1:
BFS
/ ** 
 *バイナリツリーノードの定義。
 *公共のクラスのTreeNode { 
 * int型のval; 
 *のTreeNodeは左。
 *ツリーノードを右。
 *ツリーノード(INT X){ヴァル= X。} 
 *} 
 * / 
クラスソリューション{
     公共 のint sumOfLeftLeaves(ツリーノードのルート){
         int型 RES = 0 もし(ルート== NULL ){
             戻りRES。
        } 
        キュー <ツリーノード>キュー= 新しい LinkedListの<> (); 
        queue.offer(ルート)。
        しばらく(!queue.isEmpty()){
            ツリーノードCUR = queue.poll()。
            もし(!cur.left = NULL ){
                 場合(cur.left.left == NULL && cur.left.right == NULL ){ 
                    RES + = cur.left.val。
                } { 
                    queue.add(cur.left)。
                } 
            } 
            もし(!cur.right = NULL ){ 
                queue.add(cur.right)。
            } 
        } 
        戻りRES。
    } 
}


解決策2:
DFS
/ ** 
 *バイナリツリーノードの定義。
 *公共のクラスのTreeNode { 
 * int型のval; 
 *のTreeNodeは左。
 *ツリーノードを右。
 *ツリーノード(INT X){ヴァル= X。} 
 *} 
 * / 
クラスソリューション{
     公共 のint sumOfLeftLeaves(ツリーノードのルート){
         場合(ルート== NULL ){
             戻り 0 
        } 
        INT RES = 0 もし(root.left!= nullの){
             場合(root.left.left == nullの && root.left.right == nullを){ 
                RES + = root.left.val。
            } { 
                RES + = sumOfLeftLeaves(root.left)。
            } 
        } 
        RES + = sumOfLeftLeaves(root.right)。
        リターンのres; 
    } 
}

おすすめ

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