Instead of propagating from the root node to child nodes, we want to do post-order traversal; we traverse to left and right child nodes before we do the parent node.
AlgoMonster solution:
tree_height helper function returns -1 if the tree is unbalanced and the height of the tree if otherwise
NeetCode solution:
dfs returns a list where the first element is a boolean indicating whether the node’s subtrees are balanced; the 2nd element is the height of the sub-tree