Lines Matching full:rootp
1052 Bool avl_insert_wrk ( AvlNode** rootp,
1066 if (!(*rootp)) {
1067 (*rootp) = a;
1071 cmpres = kCmp( (*rootp)->key, a->key );
1075 if ((*rootp)->left) {
1076 AvlNode* left_subtree = (*rootp)->left;
1078 switch ((*rootp)->balance--) {
1084 if ((*rootp)->left->balance < 0) {
1085 avl_swr( rootp );
1086 (*rootp)->balance = 0;
1087 (*rootp)->right->balance = 0;
1089 avl_swl( &((*rootp)->left) );
1090 avl_swr( rootp );
1091 avl_nasty( *rootp );
1094 (*rootp)->left = left_subtree;
1098 (*rootp)->left = a;
1099 if ((*rootp)->balance--)
1108 if ((*rootp)->right) {
1109 AvlNode* right_subtree = (*rootp)->right;
1111 switch((*rootp)->balance++){
1117 if ((*rootp)->right->balance > 0) {
1118 avl_swl( rootp );
1119 (*rootp)->balance = 0;
1120 (*rootp)->left->balance = 0;
1122 avl_swr( &((*rootp)->right) );
1123 avl_swl( rootp );
1124 avl_nasty( *rootp );
1127 (*rootp)->right = right_subtree;
1131 (*rootp)->right = a;
1132 if ((*rootp)->balance++)
1142 oldV->w = (*rootp)->val;
1143 (*rootp)->val = a->val;
1152 Bool avl_remove_wrk ( AvlNode** rootp,
1157 Word cmpres = kCmp( (*rootp)->key, a->key );
1161 AvlNode* left_subtree = (*rootp)->left;
1164 (*rootp)->left=left_subtree;
1166 switch ((*rootp)->balance++) {
1172 switch ((*rootp)->right->balance) {
1174 avl_swl( rootp );
1175 (*rootp)->balance = -1;
1176 (*rootp)->left->balance = 1;
1179 avl_swl( rootp );
1180 (*rootp)->balance = 0;
1181 (*rootp)->left->balance = 0;
1188 avl_swr( &((*rootp)->right) );
1189 avl_swl( rootp );
1190 avl_nasty( *rootp );
1197 AvlNode* right_subtree = (*rootp)->right;
1200 (*rootp)->right = right_subtree;
1202 switch ((*rootp)->balance--) {
1208 switch ((*rootp)->left->balance) {
1210 avl_swr( rootp );
1211 (*rootp)->balance = 1;
1212 (*rootp)->right->balance = -1;
1215 avl_swr( rootp );
1216 (*rootp)->balance = 0;
1217 (*rootp)->right->balance = 0;
1224 avl_swl( &((*rootp)->left) );
1225 avl_swr( rootp );
1226 avl_nasty( *rootp );
1232 assert((*rootp)==a);
1233 return avl_removeroot_wrk(rootp, kCmp);
1238 /* Remove the root of the AVL tree *rootp.
1239 * Warning: dumps core if *rootp is empty
1242 Bool avl_removeroot_wrk ( AvlNode** rootp,
1247 if (!(*rootp)->left) {
1248 if (!(*rootp)->right) {
1249 (*rootp) = 0;
1252 (*rootp) = (*rootp)->right;
1255 if (!(*rootp)->right) {
1256 (*rootp) = (*rootp)->left;
1259 if ((*rootp)->balance < 0) {
1261 a = (*rootp)->left;
1265 a = (*rootp)->right;
1268 ch = avl_remove_wrk(rootp, a, kCmp);
1269 a->left = (*rootp)->left;
1270 a->right = (*rootp)->right;
1271 a->balance = (*rootp)->balance;
1272 (*rootp) = a;