The constraint is generally applied recursively to every subtree. That is, the tree is only balanced if:
- The left and right subtrees’ heights differ by at most one, AND
- The left subtree is balanced, AND
- The right subtree is balanced
According to this, the next tree is balanced:
A / \ B C / / \ D E F / G
The next one is not balanced because the subtrees of C differ by 2 in their height:
A / \ B C <-- difference = 2 / / D E / G
That said, the specific constraint of the first point depends on the type of tree. The one listed above is the typical for AVL trees.
Red-black trees, for instance, impose a softer constraint.