class Solution { public: // 平衡二叉树的定义 // 1、必须是二叉排序树 // 2、每个结点的左子树和右子树的深度差的绝对值小于等于1 // 递归求二叉树的深度 int levelDepth(TreeNode* root) { if(root == NULL) { return 0; } // 返回较大的一个 return levelDepth(root->left)>levelDepth(root->right) ? levelDepth(root->left)+1 : levelDepth(root->right)+1; } bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot == NULL) { return true; } else { if(abs(levelDepth(pRoot->left)-levelDepth(pRoot->right)) > 1) { // 如果左子树和右子树的深度差的绝对值大于1,则返回false return false; } } // 递归判断 return (IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right)); } };