Tuesday 14 November 2017

Option Binärbaum


Breadth-first search Es nennt sich breit-first, nicht Atem-first. Auch diese Initialisierung ist sinnlos, da Sie den Wert des Läufers sofort in der Schleife überschreiben: Und die Besetzung ist auch sinnlos, da die Warteschlange korrekt mit TreeNode-Typ deklariert wird. Depth-first search Die depthFirstSearch-Methode setzt alle node. visited true. So dass Sie nicht in der Lage, es zweimal nennen. Eigentlich ist es wirklich schlecht, Nebenwirkungen wie diese haben. Es wäre besser, wenn TreeNode das besuchte Feld überhaupt nicht besitze. Es s Verschmutzung der Klasse mit Daten nur von einem bestimmten Zweck, die Tiefe-erste Suche verwendet. Es gehört nicht dazu. Sie konnten verfolgen, was mit einem Set besucht wurde. Verwendet nur in depthFirstSearch. TreeNode Ich würde leftNode nach links und rechtsNode nach rechts umbenennen. Es ist einfacher und jeder versteht, was sie sind. Da Sie nie ändern müssen Daten. Es kann endgültig sein. Die aktuelle Implementierung ist auf int-Werte beschränkt. Es wäre besser, wenn das BST etwas vergleichbares speichern könnte. Ändern Sie die Klassendeklaration auf diese: Ebenso für TreeNode Ersetzen Sie alle Vergleichsoperationen wie x. data Unit Testing Ihr Grundtest könnte leicht nützlicher (und weniger einfach) werden, wenn Sie nicht nur für ein zufälliges Element, sondern für alle Elemente, die Sie tun Eingefügt, da Sie das Wertearray sowieso bereit haben: Ein einzelner Testfall namens basicTest wird diese Klasse nicht ordnungsgemäß testen lassen. Zumindest könnten Sie ein paar weitere Testfälle, die offensichtlich notwendig sind, wenn man über eine binäre Suche Baum. Zum Beispiel, was passiert, wenn Sie versuchen, nicht vorhandene Elemente zu erhalten Der BST sollte nicht zulassen, dass doppelte Werte: Natürlich erfordert dies eine. size-Methode, so implementieren ein, und ein Testfall mit ihm auch: Formatierung Die Formatierung ist chaotisch: Grundsätzlich , Verwenden Sie Ihre IDE, um Code richtig zu formatieren. Es macht es auch einfacher zu überprüfen. (Für dich selbst) versuche ich nicht, Boden zu decken, der bereits durch janos s große Antwort außer der Betonung der Formatierung berührt worden ist. Sie tun meist einen guten Job mit der Einrückung, die eindeutig der wichtigste Faktor ist, aber breadthFirstSearch hat eine while-Schleife, deren Körper isn t eingerückt. Konsequente Räume rund um die Operatoren (sieht aus wie Sie), strukturelle Klammern (wenn usw.) und Klammern ist auch wichtig. Wie ich Ihren Code scannen, jeder Fall von if (und) Benennen von zwei Traversalmethoden Search ist irreführend. Sie aren t auf der Suche nach einem bestimmten Wert. Verwenden Sie Traverse oder besuchen statt. Warum sind die Traversalmethoden statisch Tree Traversal schreit für Rekursion So viele Ihrer Methoden wäre einfacher mit Rekursion anstelle von Schleifen, Stacks, Warteschlangen und besuchte Flags (ist, dass Flag auch notwendig mit dem Looping-Algorithmus). Ah, lesen weiter Ich sehe, Sie verwendet diese für preOrderTraversal und inOrderTraversal. Warum die Differenz für post-order Sie können auch Rekursion in den anderen Methoden wie get und insert. Sie benötigen eine Hilfsmethode, um die Rekursion zu starten, und Sie können die rekursiven Methoden zu TreeNode verschieben, wenn Sie möchten. Ich habe einige Methoden mit Iteration implementiert, während andere mit Rekursion für die Praxis beider Ansätze. Vielen Dank für die Bewertung. Nishant mehta Ich bin mit den Bewertungen von David Harkness und janos einverstanden. Ich wollte einen kleinen Punkt hinzufügen: anstelle der harten Codierung deiner verschiedenen Methoden, um die Werte auszudrucken, könnten Sie diese Methoden definieren, um ein Argument vom Typ Consumer zu nehmen (wobei T der Typ ist, der den harten Code int ersetzt). Sie können dann einen Verbraucher implementieren, der nur Werte ausdruckt, aber Ihr Code könnte auch für andere Dinge verwendet werden. Beantwortet Sep 7 14 am 17:42 C Programm für die binäre Suche Baum-Erstellung und Traversals. Binärer Suchbaum ist ein Baum, der die folgenden Eigenschaften hat: 1. Der linke Unterbaum eines Knotens enthält kleinere Knoten als ein Wurzelknoten. 2.Der rechte Teilbaum eines Knotens enthält größere Knoten als ein Wurzelknoten. 3.Both die linken und rechten Unterbäume müssen auch binäre Suchbäume sein. Es gibt drei Arten von Baumdurchläufen. Vorbestellen, Postorder und Inorder. Lesen Sie mehr über C Programming Language. Sie können ganz einfach wählen Sie den Code durch einen Doppelklick auf den Codebereich oben. Um regelmäßige Updates auf neue C-Programme zu erhalten, können Sie Follow-up-Programm Sie können diese Programme auf unserer Facebook-Seite besprechen. Starten Sie eine Diskussion jetzt, Teilen Sie dieses Programm mit Ihren Facebook-Freunden jetzt, indem Sie es mögen (Sie können dieses Programm an Ihren Freund mit diesem Button senden) Möchten Sie Updates direkt in Ihrem Feed-Reader Holen Sie sich unser Feed Frage 1 Erläuterung: Ein vollständiger binärer Baum (Manchmal korrekter binärer Baum oder 2-Baum oder streng binärer Baum) ist ein Baum, in dem jeder Knoten außer den Blättern zwei Kinder hat. Ein vollständiger binärer Baum ist ein binärer Baum, in dem jede Ebene, außer vielleicht die letzte, vollständig gefüllt ist und alle Knoten so weit wie möglich liegen. A) ist falsch. Beispielsweise ist der folgende Binärbaum weder vollständig noch voll B) falsch. Der folgende Binärbaum ist vollständig, aber nicht voll C) ist falsch. Der folgende Binärbaum ist voll, aber nicht vollständig D) ist falsch. Folgende Binärstruktur ist vollständig und voll Verweis en. wikipedia / wiki / Binärbaum Arten von Binärbäumen Wenn arity von Operatoren festgelegt ist, dann kann die folgende Notation verwendet werden, um Ausdrücke ohne Klammern zu analysieren a) Infix-Notation (Inorder traversal Eines Ausdrucksbaumes) b) Postfix-Notation (Postorder-Traversal eines Expressionsbaums) c) Präfix-Notation (Pretraction-Traversal eines Expressionsbaums) Frage 8 Erläuterung: Die maximal mögliche Höhe eines Baumes mit n Knoten wird durch H (n ). Der maximal mögliche Wert von H (n) kann in etwa durch folgende Rekursion beschrieben werden. Die Lösung der obigen Wiederholung ist Tex log n / Tex. Wir können es einfach erhalten, indem wir einen Rekursionsbaum zeichnen. 4. Betrachten Sie den folgenden Algorithmus für die Suche nach einer gegebenen Zahl x in einem unsortierten Array A 1..n mit n verschiedenen Werten: Unter der Annahme, dass x in A vorhanden ist, was ist die erwartete Anzahl der Vergleiche, die durch den Algorithmus, bevor sie beendet wird A) nb) nl c) 2n d) n / 2 Antwort (a) Wenn Sie sich an die Münzen - und Würfelfrage erinnern, können Sie nur die Antwort für die oben genannten raten. Unten ist der Beweis für die Antwort. Die erwartete Anzahl der Vergleiche ist E. Der Wert von E ist die Summe des folgenden Ausdrucks für alle möglichen Fälle. Fall 1 Fall 2 Fall 3 Es gibt tatsächlich unendlich viele Fälle. Also haben wir folgende unendliche Reihen für E. Nach Multiplikation von Gleichung (1) mit (n-1) / n erhalten wir Subtraktion (2) von (1), wir erhalten Der Ausdruck auf der rechten Seite ist ein GP mit unendlichen Elementen. Wir wollen die Summenformel (a / (1-r)) anwenden. Ein vollständiger n-ary Baum ist ein Baum, in dem jeder Knoten n Kinder oder keine Kinder hat. Sei I die Anzahl der internen Knoten und L die Anzahl der Blätter in einem vollständigen n-bry Baum. Wenn L 41 und I 10 der Wert von n ist Frage 15 Erläuterung: Es wird erwähnt, daß jeder Knoten eine ungerade Anzahl von Nachkommen hat, einschließlich Knoten selbst, so daß alle Knoten eine gerade Anzahl von Nachkommen 0, 2, 4 haben müssen. Das heißt, jeder Knoten sollte entweder 0 oder 2 Kinder haben. So gibt es keinen Knoten mit 1 Kind. Daher ist 0 eine Antwort. Im Folgenden finden Sie einige Beispiele. Ein solcher binärer Baum ist voller Binärbaum (ein binärer Baum, in dem jeder Knoten 0 oder 2 Kinder hat). Die Höhe eines binären Baums ist die maximale Anzahl von Kanten in jedem Wurzel-zu-Pfad. Die maximale Anzahl von Knoten in einem binären Baum der Höhe h ist:

No comments:

Post a Comment