Vergleich Binärbaum

safin23

Grünschnabel
Ich komme mit der Rekursion nicht weiter.
Es soll eine Objektmethode sein, die ein Binärbaum mit einem anderen vergleicht.
Wer könnte mir helfen?
Code:
public class SortedBinTree {
		int value;
		SortedBinTree left;
		SortedBinTree right;
		
	SortedBinTree (SortedBinTree left,int value,SortedBinTree right) {
		this.value = value;
		this.left = left;
		this.right = right;}

public boolean vergleiche(SortedBinTree baum){
	boolean wahr=false;
		if(this.value!=baum.value) wahr=false;
		else
			if((this.left==null)&(baum.left==null))wahr=true;
				if((this.right==null)&(baum.right==null))wahr=true;
					if (left.vergleiche(baum.left))wahr=true; 
						if (right.vergleiche(baum.right))wahr=true; 
				return wahr;}}
 
Hi,

für dein vergleich zweier Objekte solltest Du die Object.equals( Object) überschreiben, dafür ist diese Methode da...

Code:
public class SortedBinTree {
	int value;
	SortedBinTree left;
	SortedBinTree right;

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

	public int getValue() {
		return value;
	}

	public SortedBinTree getLeft() {
		return left;
	}

	public SortedBinTree getRight() {
		return right;
	}

	@Override
	public boolean equals( Object obj)
	{
		
		if( null!=obj && obj.getClass().equals( SortedBinTree.class))
		{
						
			SortedBinTree tree = (SortedBinTree)obj;
			
			return  this.getValue() == tree.getValue() &&
					( null!=this.getLeft() && this.getLeft().equals( tree.getLeft()) || null==this.getLeft() && null==tree.getLeft()) &&
					( null!=this.getRight() && this.getRight().equals( tree.getRight()) || null==this.getRight() && null==tree.getRight());
			
		}
			
		return false;
		
	}
	
	public static void main(String[] args) {
		
		
		SortedBinTree treeA2 = new SortedBinTree( 1);
		SortedBinTree treeB2 = new SortedBinTree( 2);
		SortedBinTree treeB1 = new SortedBinTree( 1);
		SortedBinTree treeA1 = new SortedBinTree( 2);
		SortedBinTree treeB = new SortedBinTree( treeB1, 1, treeB2);
		SortedBinTree treeA = new SortedBinTree( treeA1, 2, treeA2);
		
		SortedBinTree tree = new SortedBinTree( treeA,1,treeB);
		
		System.out.println( tree.equals( tree));
		System.out.println( tree.equals( treeA));
		System.out.println( tree.equals( treeB));
		
	}
	
	
}

das ist jetzt nur mal so auf die schnelle...mußt noch aufpassen das Du Dich nicht in einer Endlosrekursion fällst, weil Du Baum A den Baum A als SubNode angefügt hast...

hmf
 
Zurück