Guten Tag,
wie ist es möglich einen Baum im LevelOrder verfahren wiederzugeben ? Gelungen ist es mir bereits im Inorder/PreOrder und postOrder verfahren.
wie ist es möglich einen Baum im LevelOrder verfahren wiederzugeben ? Gelungen ist es mir bereits im Inorder/PreOrder und postOrder verfahren.
Java:
package com.provinzial.www.binaerbaum;
import java.util.ArrayList;
import java.util.List;
public class Binaerbaum {
private Knoten wurzel;
public void einfuegen(int ordbg) {
Knoten neu = new Knoten(ordbg);
if (wurzel == null) {
wurzel = neu;
}
else {
Knoten lfd = wurzel;
boolean weiter = true;
while (weiter) {
if (ordbg > lfd.getOrdbg()) {
if (lfd.getRechts() != null) {
lfd = lfd.getRechts();
} else {
lfd.setRechts(neu);
weiter = false;
}
} else {
if (lfd.getLinks() != null) {
lfd = lfd.getLinks();
} else {
lfd.setLinks(neu);
weiter = false;
}
}
}
}
}
public List<Integer> inOrder() {
List<Integer> liste = new ArrayList<>();
inOrder(wurzel, liste);
return liste;
}
private void inOrder(Knoten knoten, List<Integer> liste) {
if (knoten != null) {
inOrder(knoten.getLinks(), liste);
liste.add(knoten.getOrdbg());
inOrder(knoten.getRechts(), liste);
}
}
public List<Integer> preOrder() {
List<Integer> liste = new ArrayList<>();
preOrder(wurzel, liste);
return liste;
}
public void preOrder(Knoten knoten, List<Integer> liste) {
if (knoten != null) {
liste.add(knoten.getOrdbg());
preOrder(knoten.getLinks(), liste);
preOrder(knoten.getRechts(), liste);
}
}
public List<Integer> postOrder() {
List<Integer> liste = new ArrayList<>();
postOrder(wurzel, liste);
return liste;
}
public void postOrder(Knoten knoten, List<Integer> liste) {
if (knoten != null) {
postOrder(knoten.getLinks(), liste);
postOrder(knoten.getRechts(), liste);
liste.add(knoten.getOrdbg());
}
}
public List<Integer> levelOrder() {
List<Integer> liste = new ArrayList<>();
levelOrder(wurzel, liste);
return liste;
}
public void levelOrder(Knoten knoten, List<Integer> liste) {
if (knoten != null) {
postOrder(knoten.getLinks(), liste);
postOrder(knoten.getRechts(), liste);
liste.add(knoten.getOrdbg());
}
}
}