【发布时间】:2017-05-13 15:28:40
【问题描述】:
我有一种根据字母顺序在 BST 中插入节点的方法,但是当我比较 2 个字符串时我有一个无限循环我认为当它通过比较时值永远不会改变,所以它再次与相同值导致无限循环。我认为aux 和Tnodes 没有使用递归方法更新值,因此它会一遍又一遍地比较相同的值。
class BST {
BSTNode root;
public BST() {
root = null;
}
BSTNode aux = new BSTNode();
BSTNode insertNames(BSTNode T , int data, String name, double salary) {
if (root == null) {
T = new BSTNode();
T.setName(name);
root = T;
} else {
aux = root;
if (name.compareTo(aux.getName()) < 0)
aux.setLeft(insertNames(aux.getLeft(),data, name, salary));
else if (name.compareTo(aux.getName()) >= 0)
aux.setRight(insertNames(aux.getRight(),data, name, salary));
}
return T;
}
}
class Main{
public static void main(String[] args){
BST alpha=new BST();
BSTNode root = new BSTNode();
alpha.insertNames(root, 0, "Roy", 0);
alpha.insertNames(root, 0, "Joseph", 0);
}
}
【问题讨论】:
-
逐行调试代码时发现了什么?这应该告诉你为什么它有一个无限循环。
-
值没有改变,但我不知道为什么,当它到达
else语句中的第一个if时,它会将值插入到aux的左侧再次出现的递归部分方法内部的参数没有改变
标签: java data-structures binary-search-tree