Angesichts eines binären Baumes mit n Knoten, Ist es möglich zu überprüfen, ob der gegebene Baum BST ist oder nicht, in O (log n) Zeit Komplexität?Binärsuchbaum in O (log n)?
Antwort
Wenn n die Anzahl der Knoten ist, dann nein, da Sie mindestens einmal alle Werte betrachten müssen, also benötigen Sie mindestens O (n). Aber wenn Sie n so definieren, dass es etwas Besonderes ist, wie die Gesamtzahl der Teilbäume, können Sie dies erreichen. (Es ist jedoch ein wenig dumm, dies zu tun, da es ungefähr dasselbe ist, wenn man sagt, dass man mehr Geld hat, wenn man 100 Cent statt 1 Euro hat. Es sieht vielleicht beeindruckender aus, aber auch komisch und hat keinen Mehrwert, es ist nur verwirrend mit dem arbeiten und normale Leute tun dies nicht)
Hier ist der O (n) Algorithmus: Wenn es eine BST ist, dann sind sowohl die linken als auch die rechten Bäume BST, in denen alle Werte zwischen einem bestimmten Minimum liegen und Maximalwert, so können Sie eine rekursive Methode erstellen, die ein wenig wie das geht:
public boolean isBST(subtree, minvalue, maxvalue){
root=root of subtree;
if(root>maxvalue || root<minvalue) return false;
if(has left child)
if(!isBST(left-child-tree, minvalue, rootvalue)) return false;
if(has right child)
if(!isBST(right-child-tree, rootvalue, maxvalue)) return false;
return true;
}
und rufen Sie diese Methode mit isBST (Baum, -unendlich, + unendlich). Dies ist Pseudocode und kann natürlich besser implementiert werden.
können Sie hier auch für verschiedene Versionen des O (n) -Algorithmus sehen: http://www.geeksforgeeks.org/a-program-to-check-if-a-binary-tree-is-bst-or-not / – Lavandysh
- 1. Ist log (n!) = O ((log (n))^2)?
- 2. O (n log n) in Javascript-Algorithmus
- 3. O (log 10n) oder O (log n) x 10 schneller?
- 4. Was ist O (log * N)?
- 5. Ändern Komplexität von O (n) bis O (log n)
- 6. Ist binäre Suche O (log n) oder O (n log n)?
- 7. Ist log (n^c) gleich O (log (n))
- 8. Unterschied zwischen O (n) und O (log (n)) - was ist besser und was genau ist O (log (n))?
- 9. ListBox.FindString Was ist die Worst-Case-Laufzeit? O (n), O (n log n), O (1) & rarr;
- 10. Begrenzungsrahmen der Linienanordnung in O (n log n) Zeit
- 11. Löst dies 3SUM in O (N log (N)) Zeit?
- 12. Wenn f (n) = O (g (n)), ist log (f (n)) = 0 (log (g (n))?
- 13. Algorithmus Komplexität - Erklärung von O (log n)?
- 14. Große O-Notation - O (nlog (n)) gegen O (log (n^2))
- 15. Gibt es eine Kurzbezeichnung für O (n log n)?
- 16. Warum wird ein String O (n log n) sortiert?
- 17. Ist die Quadratwurzel von n näher an O (log n) oder O (n)?
- 18. Javascript: Ändern Sie die Lösung zu O (n log n)
- 19. Großes O der Hashtabelle vs. Binärsuchbaum
- 20. Mittlere Zahlen in O (log n) Zeit in Swift
- 21. Zählen in Intervallen in O (log (n)) Zeit
- 22. Finding min/max-Fenster in bewegter O (log (n))
- 23. fibonacci serie nth nummer in php mit O (log N)
- 24. Big-Theta funktioniert auch mit Laufzeit in log (n!) Und log (n) + log (n^2)
- 25. Zwischen O (nlog * n) und O (n)?
- 26. Warum dauert ein Herzschlag O (log N) Zeit zu propagieren
- 27. Suche nach einem Element in 2d sortiertem Array in O (log m + log n) Zeit?
- 28. Was ist die Komplexität des Codes, die funktioniert O (n * log n) und dann O (n^2) arbeiten?
- 29. Gibt 'Divide and Conquer' O (log N) für unsortiertes Array?
- 30. Algorithmus mit O (log N^3/M) Zeit Komplexität
Ich denke, diese Frage ist besser geeignet für [Informatik] (https://cs.stackexchange.com/)? – Fildor