class Solution { public: bool IsBalanced_Solution(TreeNode* pRoot) { return getHeight(pRoot) == -1 ? false : true; } // 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1 // 后序遍历 int getHeight(TreeNode* node) { if (node == nullptr) return 0; int left_height = getHeight(node->left); // 左子树 if (left_height == -1) return -1; int right_height = getHeight(node->right); // 右子树 if (right_height == -1) return -1; int res; if (abs(left_height - right_height) > 1) { // 中 res = -1; } else { res = 1 + max(left_height, right_height); // 以当前节点为根节点的树的最大高度 } return res; } };