web-dev-qa-db-ja.com

完全な二分木のリーフノードの数

問題 nノードの完全な二分木で葉ノードの数を見つけます。

上記の問題に対して再帰的なプログラムを作成し、ツリーをトラバースして、子のないノードに到達するたびにリーフノードの数を増やしました。しかし、ツリーは完全な二分木なので、問題が簡単になると思いますが、どうすればよいかわかりません。コンパクトな形(数式のようなもの)に縮小できますか?.

7
user5720856

N個のノードを持つ完全な二分木のリーフノードの数は(n + 1)/ 2に等しくなります。

参照 上記の式に。

9
Daga

1つのリーフノードから開始し、各分岐ステップで2つの新しいリーフノードが作成され、1つのリーフノードが内部ノードに変わります(ツリー内の+1リーフのネットの場合)。したがって、ツリーには2b + 1ノード、b内部ノード、およびb + 1リーフがあります。ここで、bは分岐の数です。

n = 2b + 1

b =(n-1)/ 2

1
Daniel Oliveira