1
我的工作是顯示插入隨機生成的密鑰(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;
}
}
}