葉にC言語再帰ルートノード番号と

タイトル説明

バイナリツリーが与えられると、ルートから各リーフノードに、デジタル0-9に格納されている各ノードは、パスの数を表します。

例えば、リーフノード1-> 2-> 3のルートからのパスは、数123を表します。

すべての数値の和によって生成されたリーフノードへのルートから算出しました。

説明:リーフノードは、ノードが子ノードを持たないです。

 

入力:[ 123 ]
     1 
   / \
   2    3 
出力:25 
説明:
葉ノードのルートをルートから1 - > 2の数を表し12 
ルートからリーフノードルーティングする1 - > 3の数を表し13 
したがって、デジタル合計 = 12 + 13 = 25
入力:[ 49051 ]
     4 
   / \
   9    0
  / \
 5    1 
出力:1026 
説明:
ルートからリーフノードパスに4 - > 9 - > 5は数表し495 
ルートからリーフ・ノード・パスに4 - > 9。 - > 1の数を表し491 
ルートからのパスのリーフノードに4 - > 0の数を表す40 
したがって、デジタル和 = 495 + 491 +40 = 1026

 

質問

1  / * *
 2  *バイナリツリーノードの定義。
3  *構造体のTreeNode {
 4  * int型のval;
5  *構造体のTreeNode *左;
6  *構造体のTreeNode *右;
7  *}。
8   * / 
9  
10  のint sumNumbers(構造体ツリーノード*のルート){
 11  
12 }

 

問題の解決策

1  / * *
 2  *バイナリツリーノードの定義。
3  *構造体のTreeNode {
 4  * int型のval;
5  *構造体のTreeNode *左;
6  *構造体のTreeNode *右;
7  *}。
8   * / 
9  
10  INTワーク(構造体ツリーノード* R、int型の数){
 11      カウント=カウント* 10 + R-> ヴァル。
12      もし(R->左== NULL && R->右== NULL)の戻りカウント;
13      もし(R->左== NULL)戻り作業(R->)カウント、右;
14      もし(R->右== NULL)戻り作業(R-> 左、カウント);
15      戻り作業(R->左、カウント)+作業(R-> 右、カウント);
16  }
 17  
18  のint sumNumbers(構造体のTreeNode * ルート){
 19      であれば(ルート== NULL)戻り 0 20      リターンワーク(ルート、0 );
21 }

 

バイナリデータと再帰デジタル伝送を含み、したがって、再帰関数と呼ばれます。

累積数は、現在のノード左の子ノードと累積数値と右の子に等しいです。

左の子と右の子ノードが空の場合であることを返します。

 

出典:ボタン(LeetCode)に滞在
します。https://leetcode-cn.com/problems/sum-root-to-leaf-numbersリンク
すべてのネットワークからの控除が著作権を保有します。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。

 

おすすめ

転載: www.cnblogs.com/shi-champion/p/11678605.html
おすすめ