如何在二叉搜索树中插入随机整数

时间:2016-04-28 18:12:47

标签: java random binary-search-tree

对于我的作业,我创建了一个代码,该代码从一组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);
            }
        }
    }

我需要弄清楚如何将随机数移动到二叉树中。有什么建议吗?

1 个答案:

答案 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);
        }
    }
}