这是我必须制作的AVL树(希望足够大以便清楚地看到)
http://oi46.tinypic.com/2426fer.jpg
我知道我的树对于我必须做的事情是正确的,但我不确定AVL树的高度以及它是如何工作的,正如你在我的绘图中可能看到的那样。真的希望你能提供帮助,我理解与AVL树有关的其他一切的概念。感谢
答案 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。
你应该做一个迭代加法而不是递归加法,它会更快。