preOrder, inOrder, postOrder rekursiv zusammensetzen aus String

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:

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 =)
 

Ähnliche Java Themen

Neue Themen


Oben