k分木の葉の数を計算する関数 f(x) を見つけようとしています。たとえば、それぞれ -1、-2、-3 の 3 つの子を持つルート 4 で始まるツリーを作成したとします。葉は null 値ではなく、0 値のみになります。私は関数を理解しようとして過去 1 日を費やしましたが、正しい方向に進んでいるようには見えません。
元:
4
/ | \
3 2 1
/ |\ /| /
2 1 0 1 0 0
/| / /
1 0 0 0
/
0
7 葉。
どんな助けでも大歓迎です!ありがとう!
明確にするために、コードがツリーを再帰的に横断した場合と同じ答えを導き出す数式が必要です。
その他の例: {4,7}{5,13}{6,24}{7,44}{8,81}{9,149}{10,274}{11,504}{12,927}{13,1705}{14,3136} {15,5768}{16,10609}{17,19513}{18,35890}{19,66012}{20,121415}
public int numleaves(TreeNode node) {
if (node == null)
return 0;
else if (node.getLeft() == null && node.getMiddle() == null && node.getRight() == null)
return 1;
else
return numleaves(node.getLeft()) + numleaves(node.getMiddle()) + numleaves(node.getRight());
}