basic structure: RedBlack BST