java - 插入隐含泛型的二叉搜索树
问题描述
我正在尝试创建一个隐含泛型的二叉搜索树。在插入树的根之后,我正在努力插入节点,很可能是我的插入逻辑错误。但我不知道怎么做。
我的问题是,我的插入逻辑有什么问题,因为我无法在根之后插入任何节点。
这是我的插入功能
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
. 在这种情况下,您将更新节点的实际数据。
推荐阅读
- jquery - 删除具有类名的元素的父级
- ruby-on-rails - Rails 5:如何将父资源的属性传递给嵌套资源?
- python - 如何使用 Python shlex 解析 bash 数组?
- spring-mvc - 可以大摇大摆地记录在不同端口上运行的多个服务
- cakephp - Cakephp 2.9 替代 cakephp 3.0 TableRegistry
- sql - SQL:根据历史记录有效计算区间内最大同时登录用户数
- java - 运行 junit 测试时排除某些 bean
- powershell - 如何在 EWS 的最后一天收到消息?
- react-native - react-native with redux deleteTodo 动作错误
- sql - Oracle Apex - 更改图表标签