二叉搜索树:AVL树中节点的高度

时间:2012-12-06 12:22:56

标签: java data-structures nodes binary-search-tree avl-tree

这是我必须制作的AVL树(希望足够大以便清楚地看到)

http://oi46.tinypic.com/2426fer.jpg

我知道我的树对于我必须做的事情是正确的,但我不确定AVL树的高度以及它是如何工作的,正如你在我的绘图中可能看到的那样。真的希望你能提供帮助,我理解与AVL树有关的其他一切的概念。感谢


1 个答案:

答案 0 :(得分:0)

您删除了以前在使用binarySearchTree时出现问题的问题。这是我在删除问题之前写的解决方案。也许它会有所帮助。

            if (tree.left == null && tree.right == null) {
                    if (compResult < 0) {
                            tree.left.data = item;
                            return true;
                    }
                    if (compResult > 0) {
                            tree.right.data = item;
                            return true;
                    }
            }
            if (compResult < 0) {
                    if (tree.left == null) {        //RED FLAG 
                            tree.left.data = item;  //BUT tree.left IS NULL!!
                            return true;
                    } else
                            add(tree = tree.left, item, count);
            }
            if (compResult > 0) {
                    if (tree.right == null) {       //RED FLAG
                            tree.right.data = item; //BUT tree.right IS NULL!!
                            return true;
                    } else
                            add(tree = tree.right, item, count);
            }

要解决这些问题,请创建一个新节点,然后将其分配给tree.left或tree.right。

你应该做一个迭代加法而不是递归加法,它会更快。