Suppose there exists a tree where each node of the tree is either white or black, and for each internal node, its children are the opposite colour of that internal node. So if the tree were sketched, it would have the “top level” consist of (say) a black node, then the next level all white nodes, then the next level all black nodes, and so on.
Does any algorithm exist that, given a tree with root x, can check whether or not that tree meets these criteria?
Yes. A recursive depth-first traversal should do this fairly easily. Put a method on each node which checks that all of its children are of different color, and that all of its children return true when this checker function is called on them.