BinairySearchTree in Java

Pagina: 1
Acties:

  • Pwigle
  • Registratie: December 2000
  • Laatst online: 09-09 17:53
Beste mensen,

Ik zit diep in de shit met een JAVA opdracht voor school.
De bedoeling is om letters van het alfabet in een Binairysearchtree te plaatsten. Het invoegen is geen probleem. Het verwijderen is ook geen probleem. Alleen is de opdracht nu dat ik een minimum waarde (een letter dus) en een maximum waarde moet invoeren, waarna de applicatie de tussenliggende letters uit de boom moet halen. Ik gebruik de package van Weiss.

Het probleem zit in de functie:
private void cb_tweewaarden_actionPerformed


de code is:
public Hoofdscherm()
{


super();
Boom = new BinarySearchTreeWithRank() ;
}

public void processEvent(java.awt.AWTEvent event)
{

defaultProcessEvent(event);

}

private void unhandledEvent( String listenerName, String methodName, java.lang.Object event )
{

}

public java.awt.Container getContentPane()
{
// Use the following if you inherit from a JFC container such as javax.swing.JFrame
// return super.getContentPane();
return this;
}

private boolean Hoofdscherm_windowClosing(java.awt.event.WindowEvent event)
{

setVisible(false);
destroy();
return false;
}

private void cb_stoppen_actionPerformed( java.awt.event.ActionEvent event )
{
System.exit(0);

}

private void cb_toevoegen_actionPerformed( java.awt.event.ActionEvent event )
{
boolean gelukt = false;
String let = textf_letter.getText();


try
{
if ((let).length() != 1)
{
gelukt = false;
throw new Exception();

}
else
gelukt = true;
}
catch (Exception e)
{
label_opmerking.setText("U dient maar 1 letter in te voeren");
}



if(gelukt == true)
{
try
{
if(Character.isLetter(let.charAt( 0 )))
gelukt = true;
else
{
gelukt = false;
throw new Exception();
}

}
catch (Exception e)
{
label_opmerking.setText("De ingevoerde waarde moet een letter zijn");
}
}

if(gelukt == true)
{
try
{
Boom.insert( new Letter(let));
textf_letter.setText("");
label_opmerking.setText("");
}
catch (Exception e)
{
label_opmerking.setText("De letter komt al voor in de boom");
}
}

}

private void cb_tweewaarden_actionPerformed( java.awt.event.ActionEvent event )
{

String min = textf_Laagste.getText();
String max = textf_hoogste.getText();

Recursie(min, max);





}

private void cb_verwijderen_actionPerformed( java.awt.event.ActionEvent event )
{
boolean gelukt = false;
String let = textf_letter.getText();


try
{
if ((let).length() != 1)
{
gelukt = false;
throw new Exception();

}
else
gelukt = true;
}
catch (Exception e)
{
label_opmerking.setText("U dient maar 1 letter in te voeren");
}



if(gelukt == true)
{
try
{
if(Character.isLetter(let.charAt( 0 )))
gelukt = true;
else
{
gelukt = false;
throw new Exception();
}

}
catch (Exception e)
{
label_opmerking.setText("De ingevoerde waarde moet een letter zijn");
}
}

if(gelukt == true)
{
try
{
Boom.remove( new Letter(let));
textf_letter.setText("");
label_opmerking.setText("De letter is verwijderd");
}
catch (Exception e)
{
label_opmerking.setText("De letter komt niet voor in de boom");
}
}

}

private void cb_alfabet_actionPerformed( java.awt.event.ActionEvent event )
{

Letter x;

for( int i = 0; ; i++ )
{
try
{
x = ((Letter) Boom.findKth( i ));
}
catch (Exception e)
{
break;
}
System.out.print( x.getWaarde() );
}
System.out.println("");

}

private void Recursie ( String mi, String ma )
{
//Letter min, max;

//try
//{
//min = new Letter(mi);
//max = new Letter(ma);
//

//} catch (Exception e) {}

//try
//{
//System.out.println(Boom.find());
//Recursie(mi,ma);
//}
//catch (Exception e) {}
}

// add your data members here
BinarySearchTreeWithRank Boom;
Letter L;
}

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Eeeeeeeeeeeeeeeeeeej, wat stond er ook alweer in het sticky topic over huiswerk.

M.a.w.: Omschrijf je probleem is wat verder.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
[quot]
code heet dat ding

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
1 woord Visitor pattern :) .

Ik zal even een voorbeeld implementatie opzoeken.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum ik kan zo geen makkelijke implementatie vinden. De voorbeeld implementatie die ik hier heb liggen is nogal ingewikkeld (reflectie enzo).

Het idee is simpel.

1. Leer het Visitor pattern (ff zoeken op het web of een doc aan mij vragen).

2. Maak een data-structuur voor je binary-search-tree.

3. Schrijf een visitor interface voor je data-structuur

4. Stuur de visitor over je data-structuur en zet bij de grenswaarden het verzamelen van de knopen die bezocht worden aan of uit.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • MadHost
  • Registratie: Januari 2001
  • Laatst online: 22:03
Dit ziet er uit als een Haagse Hogeschool opdracht voor SW85 dacht ik :P :7

System specs | X


  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 12:17

Basszje

Reisvaap!]

Op donderdag 01 november 2001 23:44 schreef MadHost het volgende:
Dit ziet er uit als een Haagse Hogeschool opdracht voor SW85 dacht ik :P :7
Dat is nou precies wat ik wou gaan opschrijven :P .
En ik heb hem al lang gedaan ( 2 jaar geleden ofzo hadden ze dat ook al ) , maar je mag het lekker zelf uitzoeken .
Tis niet zo moeilijk :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • TimMer
  • Registratie: Februari 2000
  • Niet online
Op donderdag 01 november 2001 23:44 schreef MadHost het volgende:
Dit ziet er uit als een Haagse Hogeschool opdracht voor SW85 dacht ik :P :7
SW-88 to be correct. >:) SW-85 is software engineering...

Verwijderd

Denk eraan, het is the art of programming...
Ik heb je code functioneel hetzelfde gelaten alleen de manier van schrijven is anders (mooier en meer java) ow jah, _ is c(++)! en zeker geen java. methodes begin je met een kleine letter en schrijf je aan elkaar vast met ieder woord beginnend met een hoofdletter... en nog meer van dat soort dingen...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
import java.awt.AWTEvent;
import java.awt.Container;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;

class Hoofdscherm()
{
    public Hoofdscherm()
    {
        super();
        boom = new BinarySearchTreeWithRank() ;
    }

public void processEvent(AWTEvent event)
{
    defaultProcessEvent(event);
}

private void unhandledEvent(String listenerName, String methodName, Object event)
{
}

public Container getContentPane()
{
    // Use the following if you inherit from a JFC container such as javax.swing.JFrame
    // return super.getContentPane();
    return this;
}

private boolean hoofdschermWindowClosing(WindowEvent event)
{
    setVisible(false);
    destroy();
    return false;
}

private void cbStoppenActionPerformed(ActionEvent event)
{
    System.exit(0);
}

private void cbToevoegenActionPerformed(ActionEvent event)
{
    boolean gelukt = false;
    String let = textfLetter.getText();

    try
    {
        if (let.length() != 1)
        {
            gelukt = false;
            throw new Exception();
        }
        else
            gelukt = true;
    }
    catch (Exception e)
    {
        labelOpmerking.setText("U dient maar 1 letter in te voeren");
    }

    if(gelukt)
    {
        try
        {
            if(Character.isLetter(let.charAt(0)))
                gelukt = true;
            else
            {
                gelukt = false;
                throw new Exception();
            }
        }
        catch (Exception e)
        {
            labelOpmerking.setText("De ingevoerde waarde moet een letter zijn");
        }
    }

    if(gelukt)
    {
        try
        {
            boom.insert(new Letter(let));
            textfLetter.setText("");
            labelOpmerking.setText("");
        }
        catch (Exception e) 
        {
            labelOpmerking.setText("De letter komt al voor in de boom");
        }
    }
}

private void cbTweewaardenActionPerformed(ActionEvent event)
{
    String min = textfLaagste.getText();
    String max = textfHoogste.getText();
    
    recursie(min, max);
}

private void cbVerwijderenActionPerformed(ActionEvent event)
{
    boolean gelukt = false;
    String let = textfLetter.getText();

    try
    {
        if (let.length() != 1)
        {
            gelukt = false;
            throw new Exception();
        }
        else
            gelukt = true;
    }
    catch (Exception e)
    {
        labelOpmerking.setText("U dient maar 1 letter in te voeren");
    }

    if(gelukt)
    {
        try
        {
            if(Character.isLetter(let.charAt(0)))
                gelukt = true;
            else
            {
                gelukt = false;
                throw new Exception();
            }

        }
        catch (Exception e)
        {
            labelOpmerking.setText("De ingevoerde waarde moet een letter zijn");
        }
    }

    if(gelukt)
    {
        try
        {
            boom.remove(new Letter(let));
            textfLetter.setText("");
            labelOpmerking.setText("De letter is verwijderd");
        }
        catch (Exception e) 
        {
            labelOpmerking.setText("De letter komt niet voor in de boom");
        }
    }
}

private void cbAlfabetActionPerformed(ActionEvent event)
{
    Letter x;

    for(int i=0;; i++)
    {
        try{x = ((Letter) boom.findKth(i));}
        catch (Exception e){break;}
        System.out.print( x.getWaarde() );
    }
    
    System.out.println("");
}

private void recursie (String mi, String ma)
{
    //Letter min, max;

    //try
    //{
        //min = new Letter(mi);
        //max = new Letter(ma);
    //}
    //catch (Exception e) {}
    
    //try
    //{
        //System.out.println(boom.find());
        //recursie(mi,ma);
    //}
    //catch (Exception e) {}
}

// add your data members here
BinarySearchTreeWithRank boom;
Letter l;
}

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op donderdag 01 november 2001 23:33 schreef mbravenboer het volgende:
1 woord Visitor pattern :) .

Ik zal even een voorbeeld implementatie opzoeken.
Blader, blader....

Ah hier staat ie wel, pagina 331 van Design Patterns - Elements of reusable Object-Oriented Software. Of gebruik jij een ander boek?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
The - DDD: Ah hier staat ie wel, pagina 331 van Design Patterns - Elements of reusable Object-Oriented Software. Of gebruik jij een ander boek?
Die heb ik inderdaad oa (goed boek :) ), maar ik doelde op een implementatie speciaal gericht op binary search trees. Die implementatie was echter een beetje exotisch vanwege een navigatie experiment, dus dat was niet zo relevant ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op zondag 04 november 2001 14:12 schreef mbravenboer het volgende:

[..]

Die heb ik inderdaad oa (goed boek :) ), maar ik doelde op een implementatie speciaal gericht op binary search trees. Die implementatie was echter een beetje exotisch vanwege een navigatie experiment, dus dat was niet zo relevant ;) .
Heb komende periode een vak op school Design Patterns en ik moet dan zaken uit dat boek gaan implementeren in Java. Zal denk ik nog best een bak werk worden. Maar ja, wel iets wat ik leuk vind.

Trouwens Martin, *uche* lees mijn sig even *uche*. ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
The - DDD: Heb komende periode een vak op school Design Patterns en ik moet dan zaken uit dat boek gaan implementeren in Java. Zal denk ik nog best een bak werk worden. Maar ja, wel iets wat ik leuk vindt.
Design patterns zijn erg leuk, zeker als je ook nog in de praktijk leert om ze op de goede plaatsen te herkennen en te gebruiken :) .

Ik heb een tijd geleden een stukje geschreven over het Visitor pattern, met een kleine aanpassing zodat je navigatie door een object-structuur kunt scheiden van de berekening of de object-structuur. Zo kon je wel aardig dingen doen :) . Als je het leuk vind om te lezen, kan je het hier vinden :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
The - DDD: Trouwens Martin, *uche* lees mijn sig even *uche*. ;)
Hum, het was me al eerder opgevallen en heb wel ff nagedacht, maar ben niet zo thuis in mogelijkheden in het bedrijfsleven.

Wellicht dat je iets leuks kunt doen bij het SERC ( http://www.serc.nl , even kijken bij stages en afstudeerprojecten). De UU heeft goede contacten met het SERC. Het SERC is een soort onderzoeks-instituut, wat een beetje een brug vormt tussen bedrijsleven en onderzoek.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Als je geinteresseerd bent in design patterns;

Ik ben nu een boek aan het bestuderen dat geschreven is door Craig Larman, getiteld 'Applying UML and Patterns'.
Er wordt op een praktische manier (wat ik wel kan waarderen) oa uitgelegd welke en hoe je design patterns gebruikt in een software project.

Voor mij is het een aanrader, en het vult het GoF boek (dat toch niet _echt_ geschikt is om mee te beginnen) uitstekend aan.

Btw, martin, ik heb jou pdf'je ook even opgehaald als je het niet erg vindt. Weer wat meer leesvoer :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
farlane: Voor mij is het een aanrader, en het vult het GoF boek (dat toch niet _echt_ geschikt is om mee te beginnen) uitstekend aan.
Het is inderdaad meer een catalogus dan een hele praktische handleiding voor het toepassen van design patterns. Enige introductie is misschien wel wenselijk.
ik heb jou pdf'je ook even opgehaald als je het niet erg vindt. Weer wat meer leesvoer :)
Je leeft je maar uit :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1