Guten Abend,
ich habe jetzt per pre-, post- und inOrder (je nach Wahl) einen Binärbaum in einen String zerlegt.
Dabei wird, wenn ein Blatt erreicht worden ist ein Semikolon ( ; ) eingefügt, ansonsten ein Komma ( , )
Hier einmal preOrder als Beispiel, die anderen kommen unten, falls ihr meint dass die sich besser eignen:
aus bspw:
___1___
_2__3__
wird dann 1,2;3;
oder aus:
______1______
___2_______5_
_3__4____6___
_______7__8_
wird 1,2,3;4;5,6,7;8;
weil natürlich erst der linke Baum abgearbeitet wird.
Soviel zu meiner Theorie,
wie kann ich diesen String in der Praxis (Rekursiv oder Iterativ (richtiger Begriff?) ) wieder in einen Baum verwandeln?
Der Baum hat folgende Funktionen:
BinTree()
BinTree(Object pObject)
BinTree(Object pObject, BinTree pLeftTree, BinTree pRighttree)
isEmpty()
clear()
setRootItem()
getRootItem()
setLeftTree()
setRightTree()
getLeftTree()
getRightTree()
hier der Rest:
inOrder:
postOrder:
Danke fürs lesen schonmal =)
ich habe jetzt per pre-, post- und inOrder (je nach Wahl) einen Binärbaum in einen String zerlegt.
Dabei wird, wenn ein Blatt erreicht worden ist ein Semikolon ( ; ) eingefügt, ansonsten ein Komma ( , )
Hier einmal preOrder als Beispiel, die anderen kommen unten, falls ihr meint dass die sich besser eignen:
Java:
public void preOrder(BinTree tree) {
if( tree.getLeftTree().isEmpty() ) {
linear += (String)tree.getRootItem() + ";";
}else if( !tree.getLeftTree().isEmpty() ) {
linear += (String)tree.getRootItem() + ",";
}
if( !tree.getLeftTree().isEmpty() ) {
this.preOrder(tree.getLeftTree());
}
if( !tree.getRightTree().isEmpty() ) {
this.preOrder(tree.getRightTree());
}
}
aus bspw:
___1___
_2__3__
wird dann 1,2;3;
oder aus:
______1______
___2_______5_
_3__4____6___
_______7__8_
wird 1,2,3;4;5,6,7;8;
weil natürlich erst der linke Baum abgearbeitet wird.
Soviel zu meiner Theorie,
wie kann ich diesen String in der Praxis (Rekursiv oder Iterativ (richtiger Begriff?) ) wieder in einen Baum verwandeln?
Der Baum hat folgende Funktionen:
BinTree()
BinTree(Object pObject)
BinTree(Object pObject, BinTree pLeftTree, BinTree pRighttree)
isEmpty()
clear()
setRootItem()
getRootItem()
setLeftTree()
setRightTree()
getLeftTree()
getRightTree()
hier der Rest:
inOrder:
Java:
public void inOrder(BinTree tree) {
if( !tree.getLeftTree().isEmpty() ) {
this.inOrder(tree.getLeftTree());
}
if( tree.getLeftTree().isEmpty() ) {
linear += (String)tree.getRootItem() + ";";
}else if( !tree.getLeftTree().isEmpty() ) {
linear += (String)tree.getRootItem() + ",";
}
if( !tree.getRightTree().isEmpty() ) {
this.inOrder(tree.getRightTree());
}
}
postOrder:
Java:
public void postOrder(BinTree tree) {
if( !tree.getLeftTree().isEmpty() ) {
this.postOrder(tree.getLeftTree());
}
if( !tree.getRightTree().isEmpty() ) {
this.postOrder(tree.getRightTree());
}
if( tree.getLeftTree().isEmpty() ) {
linear += (String)tree.getRootItem() + ";";
}else if( !tree.getLeftTree().isEmpty() ) {
linear += (String)tree.getRootItem() + ",";
}
}
Danke fürs lesen schonmal =)