我的工作是展示插入随机生成的密钥(0-14012891)的步骤,例如当值较小时向左插入,当值较大时向右插入。这是我到目前为止所有这一切,我很困惑,任何类型的帮助/指针将不胜感激,我还有另一个错误,我的根14012891在添加每个新的随机生成的数字之后继续以递归方式打印,如何我也摆脱了这个吗?谢谢!
Node root;
public void addNode(int key, String name) {
Node newNode = new Node(key, name);
if(root == null) {
root = newNode;
} else {
Node focusNode = root;
Node parent;
while(true) {
parent = focusNode;
if(key < focusNode.key) {
focusNode = focusNode.leftChild;
if(focusNode == null) {
parent.leftChild = newNode;
return;
}
else {
focusNode = focusNode.rightChild;
if (focusNode == null) {
parent.rightChild = newNode;
return;
}
}
}
}
}
}
public void preOrderTraverseTree(Node focusNode) {
if (focusNode!=null) {
System.out.println(focusNode);
preOrderTraverseTree(focusNode.leftChild);
preOrderTraverseTree(focusNode.rightChild);
}
}
public static void main (String[] args) {
Random rand = new Random();
for (int j = 0; j<10; j++)
{
int pick = rand.nextInt(100);
CourseWork2 newTree = new CourseWork2();
newTree.addNode(14012891," Root ");
newTree.addNode(pick, "");
newTree.preOrderTraverseTree(newTree.root);
}
}
public class Node {
int key;
String name;
Node leftChild;
Node rightChild;
Node(int key, String name) {
this.key = key;
this.name = name;
}
public String toString () {
return name + " " + key;
}
}
}
答案 0 :(得分:0)
因此,首先,您通过for循环每次迭代创建一个新树,因此它将没有节点。然后你要添加一个根节点和一个0-100的随机数。因此,预期的结果是它将打印出根节点和随机数10次。换句话说,你的树永远不会超过2个节点。
其次,你的add方法不是递归的。您将根设置为范围中的最大值,因此通过while循环的第一次迭代将始终以终止(return)结束,因此add永远不会遍历到树的第二级以下。
希望这有助于您朝着正确的方向前进。