rekursive Funktion, die angibt, ob ein Tree ein binärer Suchbaum (BST) ist (Modifizierter Code)

8

Ich habe hier an den Übungen gearbeitet: " Ссылка "
Ich habe eine Funktion geschrieben, die entscheidet, ob ein Baum ein BST (return 1) oder nicht (return 0) ist, aber ich bin mir nicht sicher, ob mein Code total gut ist, ich habe ihn für einen BST und einen Nicht-BST-Baum getestet richtig funktionieren. Ich möchte die Meinung der Community erfahren: Aktualisierter Code :

Betrachte den Baum (keine BST):

%Vor%

meine Idee ist, 2 mit 5 zu vergleichen, wenn es gut ist, dann 1 mit 5, und wenn es gut ist, dann 6 mit 5, wenn es gut ist, 1 mit 2, wenn es gut ist, dann 6 mit 2, wenn es gut ist, dann 5 mit 7; Wenn es gut ist, gibt isBST () 1 zurück. Dieser Code soll es rekursiv tun.

die Knotenstruktur:

%Vor%

der Code:

%Vor%     
Michael Heidelberg 28.05.2015, 21:45
quelle

1 Antwort

5

Dein Code funktioniert nicht wirklich - nicht einmal für das Beispiel, das du gezeigt hast. Man vergleicht niemals 5 bis 6. Man vergleicht im Grunde die Wurzel eines Unterbaums mit root->left , root->left->left , root->left->left->left usw. Dann vergleicht man root mit root->right , root->right->right , etc ., aber Sie vergleichen nie root mit den anderen Knoten im Teilbaum. Das Problem ist, dass Sie die Wurzel eines Baums nicht mit jedem Element auf seiner rechten und linken Unterstruktur vergleichen, und Sie sollten.

Dies ist eine bekannte Interviewfrage. Die einfachere Lösung besteht darin, die für einen Unterbaum zulässigen Mindest- und Höchstwerte als Parameter zu übergeben.

So funktioniert es mit dem Beispielbaum, den Sie gezeigt haben: Sie sehen 5, daher ist der Maximalwert für jeden Knoten in 5 im linken Teilbaum 5. Ebenso ist der Mindestwert für einen Knoten in 5 im rechten Teilbaum 5. Diese Eigenschaft wird rekursiv angewendet, um zu überprüfen, ob der Wert jedes Knotens den Anforderungen entspricht. Hier ist eine funktionierende Implementierung (geht von einem Baum ohne Duplikate aus):

%Vor%     
Filipe Gonçalves 28.05.2015, 22:05
quelle

Tags und Links