java—这个二叉树可能出现哪些条件,我如何测试它们?

k2fxgqgv  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(232)

我有以下简单的二叉树实现:

class Branch implements Node {
public long value;
public Node left, right;
Branch(long value, Node left, Node right){
    this.value = value;
    this.left = left;
    this.right = right;
}

@Override
public Node insert(long newValue) {

    if(newValue<value)
        return new Branch(value, left.insert(newValue), right);
    if (newValue>value)
        return new Branch(value, left, right.insert(newValue));
    return this;

}

@Override
public boolean contains(long val) {

    if (this.value == val) {
        return true;}
    else if (val<this.value)
        return this.left.contains(val);
    else{
        return this.right.contains(val);
    }
}

}

class Leaf implements Node {
     public Node insert(long newValue)
     {
         return new Branch(newValue,this,this);}
     }

使用以下drivercode,您应该能够构建小型树:

Node root =newLeaf();
root = root.insert(5);
root = root.insert(2);
root = root.insert(7);
root = root.insert(6);

现在我要做的是证明这棵树很容易受到竞争条件的影响,我真的不知道从哪里开始
一些想法
首先,我想我可以让一些重叠的线程在parralel中向我的树中添加一堆节点,然后创建一个测试来遍历enture树,并测试是否支持基本的二叉树属性(对于任何节点,左边的子节点较小,右边的子节点较大)
第二,我认为我可以创建一个测试,其中许多线程向树中添加了许多节点,并维护了添加了多少节点的计数。然后我可以遍历树并检查树的大小是否正确
有人能帮我开发进一步的测试来测试这个树是否是线程安全的吗?特别是,我正在寻找一种方法来证明我的contains()方法不是线程安全的?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题