update on 20/3/8 :
An RBTree has such methods:
- init()
- insert(withKey:)
- remove(withKey:)
- contain(withKey:)
- levelPrint()
A PrintTree can print an RBTree by such code:
var tree = RBTree<Int>();
(0..<10).forEach { tree.insert(withKey: $0) }
let printer = PrintTree(tree: tree)
printer.printTree()