2016-08-31 6 views
1

与えられた任意のN要素でバイナリ検索ツリーを構築するのに、最悪の場合の時間の複雑さはどのくらいですか?与えられたN個の要素を持つBSTを構築するのはO(n lg n)ですか?

IはN所与の要素との間に差があると思う要素が一つずつ来るし、それにより合計N個の要素のBSTを行います。前者の場合

、それはO(N Nログ)であり、二番目にはO(n^2)あります。私は正しい?

+0

要素を1つずつ取り上げて、一度にすべてを処理する方法とは何ですか? – dasblinkenlight

+0

私は、後者の場合、Skewed BSTを構築することができ、それによってO(n^2)を持つことができると信じています。 – Garrick

+1

数字を1つずつ受け入れることは時間的にはO(n)で、空間ではO(n)です。あなたはそれらを並べ替えることができ、O(n * log n)で完璧な木を作ることができます。あなたが行くにつれツリーを構築しなければならない場合(つまり、入力用の追加のO(n)スペースが利用できない場合)、最悪のケースではO(n^2)のアンバランスなツリーになる可能性があります。 – dasblinkenlight

答えて

3

Binary Search Tree (BST)が完全にバランスしていない場合、最悪の場合の時間複雑度はO(n^2)です。一般的に、BSTは繰り返し挿入によって構築されるため、最悪の場合はO(n^2)になります。あなたは(O(nlogn)で)入力を並べ替えることができる場合でも、それはO(nlogn)

それBSTの全体的な複雑で、その結果、O(n)で構築することができ、その後、最悪の場合の時間の複雑さは、我々は挿入を繰り返している場合でもO(nlog n)で、self-balancingです。

関連する問題