/* AGS 3.22 */ (a1) mit Hilfsfunktion void teilsumme(B_Ptr t) { if (t == NULL) return; teilsumme(t->left); t->weight = summe(t); teilsumme(t->right); } int summe(B_Ptr t) { if (t == NULL) return 0; return t->key + summe(t->left) + summe(t->right); } (a2) ohne Hilfsfunktion void teilsumme(B_Ptr t) { if (t == NULL) return; t->weight = t->key; if (t->left != NULL) { teilsumme(t->left); t->weight = t->weight + t->left->weight; } if (t->right != NULL) { teilsumme(t->right); t->weight = t->weight + t->right->weight; } } (b) void gewicht(B_Ptr t) { int sum; if (t == NULL) return; t->weight = 0; sum = summe(t->right) - summe(t->left); if (sum > 0) t->weight = 1; else if (sum < 0) t->weight = -1; gewicht(t->left); gewicht(t->right); }