Previous checkBalanced had a bug: entire subtrees could be balanced in themselves but of differing heights to each other.  That was not detected.  This version (based on the gaylemcd java) recursively computes max meight in each branch of a subtree and requires them to differ by <= 1