タイトル説明
バイナリツリーが与えられると、ルートから各リーフノードに、デジタル0-9に格納されている各ノードは、パスの数を表します。
例えば、リーフノード1-> 2-> 3のルートからのパスは、数123を表します。
すべての数値の和によって生成されたリーフノードへのルートから算出しました。
説明:リーフノードは、ノードが子ノードを持たないです。
例
入力:[ 1、2、3 ] 1 / \ 2 3 出力:25 説明: 葉ノードのルートをルートから1 - > 2の数を表し12 。 ルートからリーフノードルーティングする1 - > 3の数を表し13 。 したがって、デジタル合計 = 12 + 13 = 25。
入力:[ 4、9、0、5、1 ] 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リンク
すべてのネットワークからの控除が著作権を保有します。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。