gpt4 book ai didi

java - 插入到实现泛型的二叉搜索树中

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:14 25 4
gpt4 key购买 nike

我正在尝试创建一个实现泛型的二叉搜索树。在插入树的根后,我正在努力插入节点,很可能是我的插入逻辑是错误的。但我看不出如何。

我的问题是,我的插入逻辑有什么问题,因为我无法在根之后插入任何节点。

这是我的插入函数

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;

我应该提到我有一个打印树的函数。

最佳答案

删除以下两行后,您的代码将起作用:
node = new Node<T>(data, insert(node.getLeft(), data),node.getRight());

node = new Node<T>(data, node.getLeft(), insert(node.getRight(), data));
node.getData().compareTo(data) == 0 时,您还需要处理此情况。 。在这种情况下,您将更新节点的实际数据。

关于java - 插入到实现泛型的二叉搜索树中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com