Effiziente Datenstrukturen eines Programms optimieren die Leistung , indem es einfacher für das Programm , um die Daten, die er braucht . Binäre Suchbäume sind eine der effizientesten Datenstrukturen zur Suche in einer geordneten Datensatzes. Ob Ihre Datenstruktur eine organisierte binary- Suchbaum oder ein Standard-Binär- Baum ist , können Sie den Baum in der Höhe in Java durch eine einfache rekursive Funktion zu finden. Baumstruktur
Ein binärer Baum besteht aus einer Reihe von miteinander verbundenen Knoten . Jeder Knoten hat zwischen null und zwei untergeordnete Knoten . Jeder Knoten mit Ausnahme des Wurzelknotens genau einen übergeordneten Knoten . Der Wurzelknoten hat keine übergeordneten Knoten . Java hat keinen eingebauten Binärbaum Klasse , aber Sie können Ihre eigenen von Grund auf neu erstellen oder laden Sie ihn aus dem Internet.
Baum Höhe
Die Höhe des ein binärer Baum ist die maximale Anzahl von Knoten , mit Ausnahme des Wurzelknotens , entlang einer einzelnen vertikalen Durchlauf durch den binären Baum. Zum Beispiel würde ein binärer Baum mit nur einem Knoten eine Höhe von Null. Ein binärer Baum mit einer Wurzel -Knoten mit zwei Kindknoten hätte eine Höhe von einem. Wenn einer dieser untergeordneten Knoten hatte seinen eigenen Kindknoten , würde der Baum eine Höhe von drei .
Theory
Der einfachste Weg , um die Höhe zu bestimmen einer binären Baum in Java ist eine rekursive Methode . Diese Methode akzeptiert einen einzelnen Knoten als Argument und gibt die Höhe des binären Baum unter dem Argument Knoten . Das Verfahren nennt sich wieder für jeden der Argumentation Knoten in der Child -Knoten und speichert das Ergebnis als Integer-Variable . Er vergleicht die zwei Variablen , die die Höhe von jedem seiner Kinder darstellen , gibt man zu dem größeren der beiden Größen und gibt das Ergebnis . Wenn das Argument -Knoten an die Methode übergeben null ist, gibt die Methode negativ.
Algorithm
Die folgende Java-Methode wird die Höhe eines binären Baum zu berechnen. Er akzeptiert den Root-Knoten eines binären Baums als Argument. Alternativ können Sie auch einen anderen Knoten des binären Baums in die Methode übergeben werden , um die Höhe des Baumes unterhalb dieser Knoten zu finden. Der folgende Code wird davon ausgegangen , dass jeder Knoten des binären Baums des Typs " BinaryTreeNode " und jeder Knoten enthält Methoden, die die linken und rechten Kinder dieses Knotens namens " getLeftChild " und zurück " getRightChild . "
< p> private int findHeight ( BinaryTreeNode currentNode ) {if ( currentNode.equals ( null) ) {return -1; } int leftHeight = findHeight ( currentNode.getLeftChild ()); int rightHeight = findHeight ( currentNode.getRightChild ()); int greatestHeight = Math.max ( leftHeight , rightHeight ); Rückkehr greatestHeight ;}