I am reading through the tree(3), and I need some clarification. If I want to correctly remove an element from a red black tree that I have found and free it's memory allocation, this code should work, right?
find.i = 400; n = RB_FIND(inttree, &head, &find); if (n != NULL) { n = RB_REMOVE(inttree, &head, n); free(n); } else if (n == NULL) (void)printf("satisfied NULL check\n"); I ask because the man page is clear for splay trees, but I am not certain for Red Black trees. I looked at /usr/include/sys/tree.h, and I did not find any explicit free's. I assume that since RB_REMOVE will provide me with a pointer to the removed element, that all I need to do is free it. Also, is the above the most efficient way to find and remove an element from a red black tree? Cheers, Brian Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com