AVLTree例外

时间:2016-03-16 01:11:45

标签: java exception-handling avl-tree

我的班级正在做AVLTree,我有一项任务,我遇到了麻烦。我已完成实现,但代码无法正常运行。我的老师给了我们一个测试课,检查我们是否正确完成了。有几个测试我的实现没有通过,但我想专注于现在第一次失败的测试。

这是第一次测试的代码。

           'case 1: // Test 1: add and find a few entries
            try {
            AVLTree<String, Integer> tree = new AVLTree<String, Integer>(
                    stringComp);
            String st;

            st = new String("hello");
            tree.insert(st, new Integer(0));
            st = new String("hello6");
            tree.insert(st, new Integer(1));

            if (tree.find(new String("hello")) == null
                    || tree.find(new String("hello6")) == null) {
                System.out.println("*****Test 1: Failed");
            } else
                System.out.println("Test 1: Passed");
        } catch (AVLTreeException e) {
            System.out.println("*****Test 1: Failed"); // getting this one
        }`

我添加了一些打印语句来检查代码在哪里破坏,似乎它正在捕获AVLException,我认为这意味着我的插入或查找方法有问题。

public void insert(K key, V value) { //inserts at leaf node
    AVLnode<K, V> hold = TreeSearch(key, root); // find where to insert
    AVLnode<K, V> z = hold;
    DictEntry<K, V> temp = new DictEntry<K, V>(key, value); //creates the dictionary entry with key and value
    z.setEntry(temp); // sets the node being inserted to the correct key and value

    while (z != null) {
        z.resetHeight(); // incase height is changed
        if (java.lang.Math
                .abs(z.left().getHeight() - z.right().getHeight()) > 1) {
            z = triNodeRestructure(z.parent().parent(), z.parent(), z); //check if imbalanced
            z.left().resetHeight();
            z.right().resetHeight();
            z.resetHeight();
            break;
        }
        size++;
        z = z.parent();
    }

}

    public DictEntry<K, V> find(K key) {
    AVLnode<K, V> tempEntry = TreeSearch(key, root); 
    if (key.equals(tempEntry.element().key())) {
        return tempEntry.getEntry();
    } else
        return null;

}

我还有一个私有方法,我对该插入进行了查找并找到了

private AVLnode<K, V> TreeSearch(K key, AVLnode<K, V> w) { //finds the node or returns leaf node

    if (external(w)) {

        return w;
    }
    if (treeComparator.compare(key, (K) w.element().key()) < 0) {
        return TreeSearch(key, w.left());
    }

    else if (key.equals(w.element().key())) {
        return w;
    } else
        return TreeSearch(key, w.right());

}

任何建议或提示都会非常感激,

感谢。

0 个答案:

没有答案