Я хочу создать дерево, которое обнаружит, является ли вставка объектом типа. Символы будут сравнивать каждый и решать, куда вставлять [вправо или влево], (я знаю, что это может определить по позиции в таблице ascii), и если вставка является объектом int, она выполнит ту же операцию.
Мои вопросы:
1. Мне нужно создать дерево и в то же время установить компартор (например, если это дерево Chars, это будет Chars_comperator, который проверяет Chars и реализует Comparator (из java) .? 2. Мой код теперь хорош только для int. Becuase я беру объект для преобразования в строку, а затем в int, и после всего этого я сравниваю и решаю, куда вставлять, вот как мне это нужно? другой способ сделать это, что может заботиться все виды объектов? Вот мой код и как я создать дерево,
Дерево, узлы, типы деревьев
класса Tree
public class tree {
bNode root;
public tree() {
this.root = null;
}
public boolean isEmpty(){
return root==null;
}
public void insert(Object data)
{
if(isEmpty())
this.root = new bNode(data);
else
this.root.insert(data);
}
}
bNode Класс
public class bNode {
protected Object data;
protected bNode left;
protected bNode right;
public bNode(Object data) {
this.data = data;
this.left = null;
this.right = null;
}
public void insert(Object data){
if(Integer.parseInt(data.toString())<Integer.parseInt(this.data.toString())){
if(this.left==null)
this.left = new bNode(data);
else
this.left.insert(data);
}
else{
if(this.right==null)
this.right = new bNode(data);
else
this.right.insert(data);
}
}
Основной класс
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
tree x = new tree();
char a = 'G';
x.insert(a);
x.insert(60);
x.insert(40);
x.insert(30);
x.insert(59);
x.insert(61);
x.root.printTree(x.root);
}
}
Спасибо!
Если Я создаю дерево, например BinaryTree x = new BinaryTree (comp) и comp is Comparator comp = new IntegerComparator, поэтому теперь я точно знаю, что дерево будет деревом int, поэтому все проверки будут на int, тогда мне не нужно чтобы спросить весь вопрос (instanceof ..), я имею в виду то, что я действительно хочу, это создать функции, которые реализуют компаратор, каждая функция проверяет другую вещь, например, instanceof, например, если я создал IntegerComparator, я знаю, что каждый объект передаст compareTo целочисленного компаратора. я думаю, что это более эффективный способ сделать это. не так ли? –
нет, только новый BinaryTree(); В противном случае вы должны больше узнать о дженериках. Но вставка (Comparable comp); использует сопоставимые – raceworm
, если я хочу хранить объекты в качестве символов, которые я вставляю, как есть? –