二分探索木(つまり、最悪の場合、最良の場合、平均の場合)の検索時間を把握する方法を知っている人はいますか?
これに「宿題」のタグを付けたいと思うかもしれません。ここに良い出発点があります: http://en.wikipedia.org/wiki/Binary_search_tree
一般に、balancedバイナリ検索ツリーでは、最悪の場合はO(log n)、最良の場合はO(1)(目的の値がルートの場合)およびO(log n)の平均ケース(葉には親よりも指数関数的に多くの値が含まれます)。
最悪のケースは最も興味深いものであり、バイナリツリーの最初のレベルには1つのノードがあり、2番目のレベルには2つ、3番目のレベルには4というように認識されることで簡単にわかります。したがって、深さnの二分木のノード数は正確に2 ^ n -1。指数関数の数学的な逆関数は対数です。したがって、O(log n)です。
不均衡なツリーは、リンクリストと同じくらい悪い場合があり、次のような形になる場合があります。
1
/ \
2
/ \
3
/ \
4
/ \
この状況では、最悪の場合のアクセス時間はO(n)です。
最良のケースはO(1)です。最初の要素はあなたが探しているアイテムかもしれません。最悪の場合はO(n)つまり、歪んだツリーで、平均的な場合はO(lg n)です。