Suchbaum und Knoten in Java

spreng-kopf

Grünschnabel
Hi zusammen, ich hab da ein Problem mit einer Aufgabe.

Ich soll ein Programm schreiben, dass als Argument einen Dateinamen bekommt.
Die Datei soll zeilenweise eingelesen werden und anschließend sollen die Zeilen in alphabetischer Reihenfolge ausgegeben werden.
Dazu soll ich einen Suchbaum verwenden, dessen Knoten den Zeilen entsprechen.


Wenn mir jemand helfen kann,
Dankeschööööön!
 
Da fehlt aber die konkrete Fragestellung .. Datei einlesen ? Suchbaum anlegen ? Suchbaum durchlaufen ? Am besten ganzes Programm liefern ? :rolleyes:
 
Fragestellung fehlt, da hast du wohl Recht. :)

Suchbaum anlegen und durchlaufen würde ich denke ich auch alleine schaffen
aber dann macht sich auch schon Verzweiflung breit.
Anders formuliert, komme ich nicht auf einen Ansatz.
 
Hallo!

Suchst du sowas?
Code:
/*
 * Created on 10.01.2005@19:31:15
 *
 * TODO Licence info
 */
package de.tutorials;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * @author Administrator
 * 
 * TODO Explain me...
 */
public class SearchTreeExample {

	public static void main(String[] args) {
		new SearchTreeExample().doIt();
	}

	private void doIt() {
		try {
			BufferedReader br = new BufferedReader(new FileReader("c:/foo.txt"));
			String line;

			TreeNode root = null, currentNode = null;

			while ((line = br.readLine()) != null) {
				if (root == null) {
					root = new TreeNode(line);
				} else {
					currentNode = root;
					while (true) {
						if (currentNode.data.compareTo(line) < 1) {
							if (currentNode.rigth == null) {
								currentNode.rigth = new TreeNode(line);
								break;
							} else {
								currentNode = currentNode.rigth;
							}
						} else {
							if (currentNode.left == null) {
								currentNode.left = new TreeNode(line);
								break;
							} else {
								currentNode = currentNode.left;
							}
						}
					}
				}
			}
			
			//Ausgabe
			treeWalk(root);

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	public void treeWalk(TreeNode node) {
		if (node == null)
			return;
		treeWalk(node.left);
		System.out.println(node.data);
		treeWalk(node.rigth);
	}

	class TreeNode {
		protected TreeNode left;

		protected TreeNode rigth;

		protected String data;

		public TreeNode(String data) {
			this.data = data;
		}
	}
}

Foo.txt
Code:
FFF
DDD
BBB
AAA
CCC
EEE

HTH,

Gruß´Tom
 
Hat sich erledigt Habs hingekriegt.
Danke.



import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SearchTreeExample {

public static void main(String[] args) {
new SearchTreeExample().doIt();
}

private void doIt() {
try {
System.out.println("Dateiname eingeben: ");
BufferedReader b1 =
new BufferedReader(new InputStreamReader(System.in));
String dateiName = b1.readLine();
BufferedReader br = new BufferedReader(new FileReader(dateiName));
String line;

TreeNode root = null, currentNode = null;

while ((line = br.readLine()) != null) {
if (root == null) {
root = new TreeNode(line);
} else {
currentNode = root;
while (true) {
if (currentNode.data.compareTo(line) < 1) {
if (currentNode.rigth == null) {
currentNode.rigth = new TreeNode(line);
break;
} else {
currentNode = currentNode.rigth;
}
} else {
if (currentNode.left == null) {
currentNode.left = new TreeNode(line);
break;
} else {
currentNode = currentNode.left;
}
}
}
}
}

//Ausgabe
treeWalk(root);

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

public void treeWalk(TreeNode node) {
if (node == null)
return;
treeWalk(node.left);
System.out.println(node.data);
treeWalk(node.rigth);
}

class TreeNode {
protected TreeNode left;

protected TreeNode rigth;

protected String data;

public TreeNode(String data) {
this.data = data;
}
}
}
 
Zurück