class Solution { public: bool IsBalanced_Solution(TreeNode* pRoot) { // 当树为空时,返回TRUE if(pRoot == nullptr) return true; int leftHeight = treeHeight(pRoot->left); int rightHeight = treeHeight(pRoot->right); if(abs(leftHeight - rightHeight) > 1) // 判断左右子树的差值是否大于一,大于一返回FALSE return false; // 最后当左子树和右子树都符合平衡二叉树时,返回TRUE return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right); } int treeHeight(TreeNode* pRoot) { // 计算左右子树的层数 if(pRoot==nullptr) return 1; int leftHeight = treeHeight(pRoot->left); int rightHeight = treeHeight(pRoot->right); return max(leftHeight, rightHeight) + 1; } };