Binärer Baum ist eine Datenstruktur, in der jeder Knoten maximal zwei Nachkommen hat. Selbst in einer so einfachen Struktur kann es jedoch schwierig sein, den Inhalt anzuzeigen. In diesem Artikel werden wir uns ansehen, wie man einen Binärbaum mit der C-Sprache ableitet.
Sprache C es wird häufig für die Softwareentwicklung verwendet und ist vielen Entwicklern vertraut. Es bietet verschiedene Werkzeuge und Funktionen, die für die Arbeit mit Binärbäumen verwendet werden können.
#include #include // Структура, представляющая узел бинарного дереваstruct Node ;// Функция для создания нового узлаstruct Node* createNode(int data) newNode->data = data;newNode->left = NULL;newNode->right = NULL;return newNode;>void printTree(struct Node* root) printTree(root->left);printf("%d ", root->data);printTree(root->right);>int main()/ Создаем узлы дереваstruct Node* root = createNode(1);root-> left = createNode(2);root->right = createNode(3);root->left->left = createNode(4);root->left->right = createNode(5);");printTree(root);return 0;>
Als Ergebnis dieses Codes wird der Binärbaum als eine Folge von Knotenwerten auf dem Bildschirm angezeigt: 4 2 5 1 3.
Mit diesem oben erläuterten Ansatz können Sie einen Binärbaum in C ausgeben und ihn bei Bedarf in Ihren eigenen Programmen anwenden.
Was ist ein Binärbaum und seine Eigenschaften
Merkmale eines binären Baums:
- Jeder Knoten kann maximal zwei Nachkommen haben.
- Knoten können hierarchisch strukturiert sein.
- Der Baum kann leer sein oder nur aus einem Stammknoten bestehen.
- Die Reihenfolge, in der Elemente einem Baum hinzugefügt werden, wirkt sich auf seine Struktur und Eigenschaften aus.
Binäre Bäume werden verwendet, um verschiedene Aufgaben zu lösen, z. B. das Organisieren und Suchen von Daten, das Sortieren von Elementen und das Erstellen effizienter Algorithmen. Das Verständnis der Eigenschaften eines Binärbaums ermöglicht es Ihnen, effektiv damit zu arbeiten und sie in verschiedenen Szenarien zu verwenden.
Wie erstelle ich einen Binärbaum in C
Ein Binärbaum ist eine Datenstruktur, die aus Knoten besteht, von denen jeder einen Wert und zwei Zeiger enthält, die auf den linken und rechten Nachkommen zeigen. Das Erstellen eines Binärbaums in C umfasst die folgenden Schritte:
-
Erstellen Sie eine Struktur, die einen Baumknoten darstellt:
typedef struct Node Node;
Node* createNode(int value) data = value;newNode->left = NULL;newNode->right = NULL;return newNode;>
Node* insertNode(Node* root, int value) if (value < root->data) left = insertNode(root->left, value);> else if (value > root->data) right = insertNode(root->right, value);>return root;>
int main()
Diese Schritte helfen Ihnen, einen Binärbaum in C zu erstellen und damit zu arbeiten. Sie können diese Datenstruktur verwenden, um verschiedene Aufgaben zu lösen, z. B. das Suchen, Einfügen und Löschen von Elementen in der Struktur.
Grundlegende Operationen mit einem Binärbaum in der Sprache C
Erstellen eines Binärbaums:
Um einen binären Baum in C zu erstellen, müssen Sie die Struktur eines Baumknotens definieren. Jeder Knoten muss Daten und Zeiger auf die linken und rechten Nachkommen enthalten. Sie können dann nacheinander Knoten hinzufügen, indem Sie sie den übergeordneten Knoten zuordnen.
Einfügen eines Knotens in einen Binärbaum:
Um einen neuen Knoten in einen Binärbaum einzufügen, müssen Sie den richtigen Ort finden, an dem Sie ihn hinzufügen können. Die Standortsuche wird durchgeführt, indem die Daten des neuen Knotens mit den Daten der vorhandenen Knoten verglichen werden. Wenn die Daten kleiner als der aktuelle Knoten sind, muss der Knoten zum linken Zweig hinzugefügt werden, andernfalls zum rechten Zweig. Wenn die Zweige leer sind, wird der neue Knoten zu einem Blatt, andernfalls wird er zum Nachkomme des gefundenen Knotens.
Entfernen eines Knotens aus einem Binärbaum:
Um einen Knoten aus einem Binärbaum zu entfernen, müssen Sie ihn finden. Abhängig von der Anzahl der Nachkommen wird der Knoten dann gemäß den folgenden Regeln entfernt: wenn der Knoten keine Nachkommen hat, wird er einfach gelöscht; Wenn der Knoten nur einen Nachkommen hat, ersetzt dieser den Knoten; Wenn der Knoten zwei Nachkommen hat, müssen Sie den kleinsten Knoten rechts davon finden und ihn verwenden, um den zu löschenden Knoten zu ersetzen.
Binärbaum umgehen:
Durch die Umgehung eines Binärbaums können Sie jeden Knoten eines Baums genau einmal besuchen. Es gibt drei grundlegende Problemumgehungen: gerade (pre-order), symmetrisch (in-order) und inverse (post-order). Die direkte Durchforstung beginnt am Wurzelknoten und besucht dann den linken Teilbaum und dann den rechten Teilbaum. Ein symmetrischer Bypass besucht den linken Teilbaum, dann den Wurzelknoten und dann den rechten Teilbaum. Der umgekehrte Bypass besucht den linken Teilbaum, dann den rechten Teilbaum und dann den Wurzelknoten.
Verwendung von Zeigern und Rekursion:
Um mit einem Binärbaum zu arbeiten, werden Zeiger in der Sprache C verwendet. Zeiger werden verwendet, um Knoten miteinander zu verknüpfen und Daten an Binärbaumfunktionen weiterzuleiten. Rekursion wird auch häufig verwendet, um einen Baum zu durchforsten und Operationen an seinen Knoten auszuführen.
Der Algorithmus besteht aus den folgenden Schritten:
- Überprüfen Sie, ob der aktuelle Baumknoten NULL ist (NULL).
- Wenn ja, beenden Sie den Algorithmus.
- Wenn nicht, fahren Sie mit dem nächsten Schritt fort.
- Zeigt den Wert des aktuellen Knotens an.
- Rufen Sie den Algorithmus für die linke Teilstruktur rekursiv auf.
- Rufen Sie den Algorithmus rekursiv für die rechte Teilstruktur auf.
Beispielcode zum Implementieren eines C-Algorithmus:
void print_tree(node* root) < if (root == NULL) < return; >printf("%d ", root->value); print_tree(root->left); print_tree(root->right); >
Mit diesem Algorithmus können Sie den Binärbaum einfach in C ausgeben und sich mit seiner Struktur und seinem Inhalt vertraut machen.