Я пытаюсь создать бинарное дерево поиска, которое содержит дженерики. я борюсь со вставкой узлов после того, как вставил корень дерева, скорее всего, моя логика вставки неверна. но я не вижу как.
У меня вопрос: что не так с моей логикой вставки, потому что я не могу вставить ни одного узла после корня.
это моя функция вставки
public Node<T> insert(Node<T> node, T data) {
if (node == null)
{ System.out.println("1");
return new Node<T>(data);
}
if (node.getData().compareTo(data) < 0) {
node = new Node<T>(data, insert(node.getLeft(), data),node.getRight());
System.out.println("2");
node.setLeft(insert(node.getLeft(), data));
} else if (node.getData().compareTo(data) > 0) {
System.out.println("3");
node = new Node<T>(data, node.getLeft(), insert(node.getRight(), data));
node.setRight(insert(node.getRight(), data));
}
// After insert the new node, check and rebalance the current node if
// necessary.
switch (balanceNumber(node)) {
case 1:
node = rotateLeft(node);
break;
case -1:
node = rotateRight(node);
break;
default:
return node;
}
return node;
}
и вот где я это делаю
public void actionPerformed(ActionEvent e){
double x = Double.parseDouble(txtXCoord.getText());
double y = Double.parseDouble(txtYCoord.getText());
double m = Double.parseDouble(txtMass.getText());
String name = txtInput.getText();
switch(e.getActionCommand()){
case "add":
try {
tree.insert( drawPanel.tree.getRoot(), new Body(x,y,m,name));
drawPanel.setTree(tree);
//drawPanel.paint(getGraphics());
drawPanel.setVisible(true);
tree.PrintTree();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
break;
Я должен упомянуть, что у меня есть функция, которая печатает дерево.