I wouldn't trust myself to sit down and code a red-black tree. I'm guessing if you find a GH repo with a RB tree implementation, there will be more than a few closed issues because these kinds of things often have many edge cases.
What is more important I think is to understand why a RB tree exists: what are its unique characteristics vs a binary tree, B-tree, AVL-tree, etc.
Same thing with hash tables. If you have never coded a hash table implementation, it may be puzzling to discover there are many, many hash tables, each with pluses and minuses. The real skill is being able to understand the trade-offs and choose a hash table implementation that will work for your specific problem. And when it falls down for some specific data, load factor, etc., understand why.
What is more important I think is to understand why a RB tree exists: what are its unique characteristics vs a binary tree, B-tree, AVL-tree, etc.
Same thing with hash tables. If you have never coded a hash table implementation, it may be puzzling to discover there are many, many hash tables, each with pluses and minuses. The real skill is being able to understand the trade-offs and choose a hash table implementation that will work for your specific problem. And when it falls down for some specific data, load factor, etc., understand why.