問題 nノードの完全な二分木で葉ノードの数を見つけます。
上記の問題に対して再帰的なプログラムを作成し、ツリーをトラバースして、子のないノードに到達するたびにリーフノードの数を増やしました。しかし、ツリーは完全な二分木なので、問題が簡単になると思いますが、どうすればよいかわかりません。コンパクトな形(数式のようなもの)に縮小できますか?.
N個のノードを持つ完全な二分木のリーフノードの数は(n + 1)/ 2に等しくなります。
参照 上記の式に。
1つのリーフノードから開始し、各分岐ステップで2つの新しいリーフノードが作成され、1つのリーフノードが内部ノードに変わります(ツリー内の+1リーフのネットの場合)。したがって、ツリーには2b + 1ノード、b内部ノード、およびb + 1リーフがあります。ここで、bは分岐の数です。
n = 2b + 1
b =(n-1)/ 2