[JAVA] Gegabeltes Memorandum für Anfänger (Teil 3 Realisierung mit Klassen)

Teil 2 ist hier

Realisierung von Dichotomien mit Klassen

Lassen Sie uns diesmal die Dichotomie anders als zuvor realisieren. Ein gegabelter Baum ist eine Sammlung von Knoten und Seiten. Mit anderen Worten, wenn Sie ein Objekt erstellen können, das einen Knoten und eine Kante darstellt, können Sie eine Dichotomie realisieren, indem Sie sie verbinden. Mit anderen Worten, Sie müssen nur eine Klasse erstellen, die Knotendaten und linke und rechte untergeordnete Elemente in den Feldern enthält.

Implementierungsbeispiel

C++

BinaryTree.cpp


#include <iostream>
using namespace std;

class BinaryTree
{
	int value;
	BinaryTree *left;
	BinaryTree *right;

public:
 	BinaryTree(int);
	~BinaryTree();
	void insertNode(int);
	void inorder() const;
};

BinaryTree::BinaryTree(int value):value(value), left(0), right(0){}

BinaryTree::~BinaryTree()
{
	delete left;
	delete right;
}

void BinaryTree::insertNode(int value)
{
	if (this->value == value) {
		return;
	}

	else if (this->value > value) {
		if (this->left == 0) {
			this->left = new BinaryTree(value);
			return;
		}
		else {
			this->left->insertNode(value);
		}
	}

	else {
		if (this->right == 0) {
			this->right = new BinaryTree(value);
			return;
		}
		else {
			this->right->insertNode(value);
		}
	}
}

void BinaryTree::inorder() const
{
	if (this->left != 0) {
		this->left->inorder();
	}
	cout << this->value << " ";
	if (this->right != 0) {
		this->right->inorder();
	}

	return;
}

int main()
{
	BinaryTree root(20);
	root.insertNode(10);
	root.insertNode(26);
	root.insertNode(5);
	root.insertNode(14);
	root.insertNode(23);
	root.insertNode(25);

	root.inorder();
	cout << endl;
}

Java

BinaryTree.java


public class BinaryTree {
	int value;
	BinaryTree left;
	BinaryTree right;

	BinaryTree(int value) {
		this.value = value;
		this.left = null;
		this.right = null;
	}

	void insertNode(int value) {
		if (this.value == value) {
			return;
		}

		else if (this.value > value) {
			if (this.left == null) {
				this.left = new BinaryTree(value);
				return;
			}
			else {
				this.left.insertNode(value);
			}
		}

		else {
			if (this.right == null) {
				this.right = new BinaryTree(value);
				return;
			}
			else {
				this.right.insertNode(value);
			}
		}
	}

	void inorder() {
		if (this.left != null) {
			this.left.inorder();
		}
		System.out.print(this.value + " ");
		if (this.right != null) {
			this.right.inorder();
		}

		return;
	}

	public static void main(String[] args) {
		BinaryTree root = new BinaryTree(20);
		root.insertNode(10);
		root.insertNode(26);
		root.insertNode(5);
		root.insertNode(14);
		root.insertNode(23);
		root.insertNode(25);

		root.inorder();
		System.out.println();
	}
}

Erläuterung zur Implementierung

Die durch die insertNode-Funktion in diesem Programm gebildete Dichotomie wird insbesondere als Dichotomiebaum bezeichnet (denken Sie nicht über die insertNode-Funktion nach, da dies diesmal nicht wichtig ist). Ein Dichotomiebaum ist eine spezielle Dichotomie, bei der die Daten des linken Kindes immer kleiner als die Daten des Elternteils sind und die Daten des Kindes auf der rechten Seite immer größer als die Daten des Elternteils sind. ). Die Ergebnisse der Suche der erstellten Dichotomien in der Reihenfolge der Übergabe sind wie folgt.

5 10 14 20 23 25 26

Haben Sie verstanden, wie man Klassen implementiert?

Teil 4 ist hier

Recommended Posts

Gegabeltes Memorandum für Anfänger (Teil 3 Realisierung mit Klassen)
Halbierungsbaum-Memorandum für Anfänger (1)
Halbierungsbaum-Memorandum für Anfänger (Teil 4 Halbierungshaufen)
Bifurcated Tree Memorandum für Anfänger (Teil 5 Bifurcated Search Tree)
Memorandum über gegabelte Bäume für Anfänger (Teil 2 Suche nach gegabelten Bäumen)
CI / CD-Übung für Anfänger - Teil 1 - Umweltbau
CI / CD-Übung für Anfänger - Teil 3 - Vorbereitung für das Entwicklungsprojekt
Erleben Sie CI / CD mit Katacoda (für Anfänger) - Teil 10 (Erstellen von Docker-Bildern mit Jenkins)
Halbierungsbaum-Memorandum für Anfänger (1)
Umgebungsbau mit Docker für Anfänger
Halbierungsbaum-Memorandum für Anfänger (Teil 4 Halbierungshaufen)
Bifurcated Tree Memorandum für Anfänger (Teil 5 Bifurcated Search Tree)
Memorandum über gegabelte Bäume für Anfänger (Teil 2 Suche nach gegabelten Bäumen)
Java-Übung Teil 1
Gegabeltes Memorandum für Anfänger (Teil 3 Realisierung mit Klassen)
Ein Memorandum für Anfänger der Android-Anwendungsentwicklung
Erleben Sie CI / CD mit Katacoda (für Anfänger) - Teil 10 (Erstellen von Docker-Bildern mit Jenkins)
[Für Anfänger] Ich habe versucht, DBUnit mit Eclipse zu verwenden
[Für Anfänger] Ich habe versucht, JUnit 5 mit Eclipse zu verwenden
CI / CD-Übung für Anfänger - Teil 1 - Umweltbau
Anfänger versuchen Android Studio Teil 2 (Ereignisverarbeitung)
Anfänger versuchen Android Studio Teil 1 (Hello World)
[Für Anfänger] Verfahren zum Erstellen eines Controllers mithilfe von Schienen