binary tree

Sorry,

Code:
if(tree[i]==' ')   {    return;    };

ist schon spät ! :)

Und da ist ein Space zwischen den '-dingern !
 
Zuletzt bearbeitet:
Also ich bin jetzt mal soweit. Ich weiss nicht, vllt ist das, was ich eingeslasht hatte auch richtig. Er sagt mir immer, "invalid code", ab ereingtl sollte es so sein, dass, zb wie in diesem Falle, wenn ich folgendes eingebe:

C:\ java ConvertTree "ABCD FE"

Er mir das ausspucken sollte:

A
B
D
C
F
E
(sry, nach der Antwort, sind die Buchstaben nie so eingerückt, wie ich es gerne haben möchte)
so wie der Baum eben aufgebaut ist.

lg

PHP:
package sort;

/**
 * Informatik II - SS2007 <br>
 * Uebungsserie 2, Aufgabe 3 <br>
 * Template for class ConvertTree.java <br>
 *
 * @author Silvia Santini
 */
public class ConvertTree {


    char[] tree; //tree is a reference to an rray of char

    /**
     * Constructor
     **/
    ConvertTree(char[] a) {
      tree = a;
    }

    // param i: position in array
    // param j: current indention-level
    void indent( int i, int j ) {

    	if( tree.length >= i || tree[i] == ' ' ) return;
        //if(tree[i] != ' ' && tree[2*i] != ' ')
        	
       // if(i != ' ' && 2*i == ' ' && 2*i+1 != ' ')
        	
        
        
        // Print a space for each new tree-level
        for( int n=0; n<j; n++ ) {
            System.out.print( " " );
        }

        System.out.println(tree[i]);
        indent( 2*i ,j+1);
        indent( 2*i+1 ,j+1);
        //recursive calls
       /* indent( 2*i ,j+1);
        ......*/
    }

    /**
     * Give the programm the tree's array-representation as a
     * single string argument.
     * If your representation includes space characters,
     * then include quotes.
     * Example:
     *
     * java CovertTree $"123  67"$
     *
     * Test the programm with the following inputs (a missing node
     * is represented by a space character):
     *
     * "1234567"
     * "1 3  67"
     * "AB D   H       P"
     * "A C   G       O"
     **/
     public static void main( String args[] ) {

        if( args.length == 0 ||  args.length > 1 ) {
            System.out.println( "Invalid input" );
            System.exit( 1 );
        }

        // Prefix the input-string with a space character, so that
        // the effective tree starts at index 1
        String input = " " + args[0];

        //the method toCharArray converts a string in an array of
        //characters
        ConvertTree ct = new ConvertTree(input.toCharArray());

        // ct is an instance of the CovertTree class
        // which is initialised with the given array
        // representation
        ct.indent(1,0);
    }
 }
 
Zuletzt bearbeitet:
Hi

kommt das der Sache näher ?

Code:
void indent( int i, int j ) {

    	int tl = tree.length; 
    	
        if ( i >= tl || tree[i] == ' ' ) return;
        
        // Print a space for each new tree-level
            for( int n=0; n<j; n++ ) {
                System.out.print( " " );
            }

            System.out.println(tree[i]);

       //recursive calls
       /* indent( 2*i ,j+1);
       ......*/
        
        if ( (2*i) < tl && tree[2*i] != ' ' ) {

            indent( 2*i ,j+1);
        }
            
        if ( (2*i+1) < tl && tree[2*i+1] != ' ' ) {

            indent( 2*i+1 ,j+1);
        }
    }

Wie soll sich eigentlich die Aussage :

Test the programm with the following inputs (a missing node
is represented by a space character):
"1234567"
"1 3 67"
"AB D H P"
"A C G O"

mit diesem Code vertragen ?

Code:
   public static void main( String args[] ) {

        if( args.length == 0 ||  args.length > 1 ) {
            System.out.println( "Invalid input" );
            System.exit( 1 );
        }

Gruß JAdix
 
Ich probiers mal aus, danke:). Zu deiner Frage kann ich sagen, dass es ziemlich sicher nicht falsch sein wird, weil es zum Grundgerüst des zu uns zur Verfügung gestellten Source Code gehört. Es ist einfach so, dass, falls ein Konten leer ist, die Darstellung beim Output eingerückt wird, so wie ich es zuvor mal gepostet habe, als es aber nicht funtkioniert hat mit der Darstellung.
 
Hi,

es ist nur so, dass wenn etwas über die Konsole gestartet wird und im Eingabeparameter
irgendwelche Leerzeichen auftauchen, wird der Parameter in mehrere Argumente zerteielt !

So meine Erfahrungen zu :
"ziemlich sicher nicht falschen Grundgerüsten die einem Verfügung gestellt werden" !

Gruß JAdix
 
Also es kompiliert zwar, aber es gibt immer noch nicht das aus, was es sollte. Ich hab langsam das Gefühl, dass ich zusätzlich noch irgendwas eingeben muss, also Zahlen, damit es überhaupt einen Baum erstellt. Die Aufgabenstellung lautet nämlich so:

Schreiben Sie nun ein Java-Programm, das einen als char-Array gespeicherten Binärbaum in eingerückter From ausgibt. Vervollständigen Sie dazu die rekursive Methode "indent" in der Klasse "ConvertTree" von der Vorlesungs-Website. Die Methode soll einen Konten samt seiner Unterbäume eingerückt auf dem Bildschirm ausgeben. Die Methode besitzt zwei int-Parameter:i und j. Der erste bezeichnet den auszugebenden Knoten durch seine Position im Array, der zweite gibt die Einrücktiefe des bezeichneten Kontens an. Das Eingabearray kann dem Programm auf der Kommandozeile als(mit Anführungszeichen umschlossener) String übergeben werden.

Wäre sehr dankbar, wenn mir jemand helfen könnte.

Lg
drpingoo
 
Zurück