最近学习了这3种树,感觉其实有很多相同的地方吧,首先是最重要的旋转操作,3种树都有
AvlTree left_left(AvlTree k1) { //if(height(k1->left)-height(k1->right)<2)return k1; AvlTree k2 = k1->left; k1->left = k2->right; k2->right = k1; k1->Height = max(height(k1->left),height(k1->right))+1; k2->Height = max(height(k2->left),height(k2->right))+1; return k2; } //右右旋转 AvlTree right_right(AvlTree k1) { //if(height(k1->right)-height(k1->left)<2)return k1; AvlTree k2 = k1->right; k1->right = k2->left; k2->left = k1; k1->Height = max(height(k1->left),height(k1->right))+1; k2->Height = max(height(k2->left),height(k2->right))+1; return k2; }