Witam.
Tworzę drzewo poszukiwań binarnych w Javie i mam następujące problemy:
- Mam problem z tworzeniem korzenia. Mianowicie przekazuję np 3 razy argumenty kolejno:
addtree(2,root);
addtree(1,root);
addtree(3,root);
i niestety za każdym razem mimo że przekazuję root w argumencie to on widzi mi go jako null, i nie mam zielonego pojęcia dlaczego tak się dzieje.
Drugi problem jest taki że nie bardzo wiem jak w takim template gdzie mam <T> sprawdzić czy T jest Integerem , Stringiem bądź innym typem danych (Potrzebuję sprawdźić ze względu na sortowanie drzewa). Problem jest taki że o ile nawet już jestem w stanie sobie to sprawdzić za pomocą danej którą również przekazuje (tj sprawdzam jakiego jest typu) to nie mogę żadnych działań typu Data2<xyz.Data1 gdyż nie mogę porównywać ze sobą zmiennych T(czyli nie określonych). Próbowałem to obejść dodając przed danymi (Int) i.t.p ale nie pomogło to wcale.
Prosiłbym gorąco o pomoc w zrozumieniu tych problemów i ich rozwiązanie , gdyż sam jestem już bezsilny (Za wiele informacji na temat tych problemów na internecie nie mogłem znaleźć , zwłaszcza z moim słabym angielskim :(
class tree_tamplate <T>{
public Node root;
private class Node {
public Node left,right;
public T Data1;
}
public void addTree(T Data2,Node xyz){
if(xyz!=null){
if(Data2 instanceof Integer){
if(Data2 < xyz.Data1){
addTree(Data2,xyz.left);
}
else if(Data2 > xyz.Data1){
addTree(Data2,xyz.right);
}
}
else{
if(Data2.charAt(0)<xyz.Data1.charAt(0)){
xyz.left=new Node();
addTree(Data2,xyz.left);
}
else if(Data2.charAt(0)>xyz.Data1.charAt(0)){
xyz.right=new Node();
addTree(Data2,xyz.right);
}
}
}
else if (xyz==null){
xyz=new Node();
xyz.Data1=Data2;
}
}
}
Z góry dziękuję za pomoc