对于我的作业,我创建了一个代码,该代码从一组10,000个数字中生成一千个随机整数,将它们移动到一个容器中,然后移动到一个二叉搜索树中。我先给出了以下代码:
Random ran = new Random();
Integer x;{
for(int i = 1; i <= 100; i++){
x = ran.nextInt(10,000) + 1;
}
我有一个BSTNode&amp;一个国际。鉴于BST类中的以下代码,我可以使用它来搜索
public boolean search(Integer value) {
boolean retval = false;
numofcomps ++;
if (root == null) {
retval = false;
} else {
retval = searchtree(root, value);
}
return retval;
}
public boolean searchtree(BSTNode<IntClass> myroot, int value) {
numofcomps ++;
boolean retval = false;
if (myroot == null) {
retval = false;
} else {
if (value == myroot.element.myInt) {
retval = true;
} else {
if (value < myroot.element.myInt) {
retval = searchtree(myroot.leftTree, value);
} else {
retval = searchtree(myroot.rightTree, value);
}
}
}
我需要弄清楚如何将随机数移动到二叉树中。有什么建议吗?
答案 0 :(得分:0)
您可以以这种方式递归插入元素。它假定您已定义了这些setter和getter,但您可以更改它以轻松满足您的特定接口需求。
public void insert(int val) {
if (this.myRoot == null) {
this.myRoot = new BSTNode<Integer>(val);
} else {
insert(this.myRoot, val);
}
}
private void insert(BSTNode<Integer> node, int val) {
if (val < node.getVal()) {
if (node.getLeftChild() == null) {
node.setLeftChild(new BSTNode<Integer>(val));
} else {
insert(node.getLeftChild(), val);
}
} else {
if (node.getRightChild() == null) {
node.setRightChild(new BSTNode<Integer>(val));
} else {
insert(node.getRightChild(), val);
}
}
}