void insert(const Comparable & x, AvlNode * & t)
{
if(t == NULL)
t = new AvlNode(x, NULL, NULL);
else if(x < t->element)
{
insert(x, t->left);
if(height(t->left) - height(t->right) == 2)
if(x < t->left->element)
rotateWithRightChild(t);
else
doubleWithLeftChild(t);
}
else if(t->element < x)
{
insert(x, t->right);
if(height(t->right) - height(t->left) == 2)
if(x < t->left->element)
rotateWithRightChild(t);
else
doubleWithLeftChild(t);
}
else
; // Duplicate; do nothing
t->height = max(height(t->left), height(t->right)) + 1;
}
int height(AvlNode *t) const { return t == NULL ? -1 : t->height; }
他們怎麼能調高樹的高度?AVL樹代碼 - 我不明白
1 0 -1
高度(-1) - 高度(空)= 1&不平衡?
究竟是什麼,你不明白?理解C++語法有問題還是隻涉及算法? – sellibitze 2009-11-20 15:38:34
我真的不明白它計算樹的高度的方式嗎?算法我的意思是。 謝謝:) – nXqd 2009-11-20 15:43:29