void verify_property_5_helper(node n, int black_count, int* path_black_count) { if (node_color(n) == BLACK) { black_count++; } if (n == NULL) { if (*path_black_count == -1) { *path_black_count = black_count; } else { assert (black_count == *path_black_count); } return; } verify_property_5_helper(n->left, black_count, path_black_count); verify_property_5_helper(n->right, black_count, path_black_count); }
static void verify_property_5_helper(node *n, int black_count, int* path_black_count) { if (node_color(n) == L_BLACK_NODE) { black_count++; } if (n == NULL) { if (*path_black_count == -1) { *path_black_count = black_count; } else if (*path_black_count != black_count) { L_ERROR("incorrect black count", "verify_property_5_helper"); } return; } verify_property_5_helper(n->left, black_count, path_black_count); verify_property_5_helper(n->right, black_count, path_black_count); }
static void verify_property_5(node *root) { int black_count_path = -1; verify_property_5_helper(root, 0, &black_count_path); }