Has a custom enum for ordering, as each type of data may have its own
comparator system. Hence, each node will have a comparison function
pointer internally. Though this increases the data required to create
a binary tree, it does make it easier to support multiple types.