class Solution { public: int ult=0,max=0; void dep(TreeNode* root,int h){ //计算某子树的深度 if(h>max) max=h; if(root->left!=NULL) dep(root->left,h+1); if(root->right!=NULL) dep(root->right,h+1); } void cmpis(TreeNode* root){ //判断某节点是否平衡 int ldep=0,rdep=0; if(root->left!=NULL) { //ldep记录左子树高度 dep(root->left,1); ldep=max; max=0; } else ldep=0; if(root->right!=NULL){ //rdep记录右子树高度 dep(root->right,1); rdep=max; max=0; } else rdep=0; int jieguo=ldep-rdep; if(jieguo>1||jieguo<-1) ult=1; //若某节点不平衡,ult置1,该树不平衡 } void panduan(TreeNode* root){ //判断每个结点的平衡情况 cmpis(root); if(root->left!=NULL) panduan(root->left); if(root->right!=NULL) panduan(root->right); } bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot==NULL) return true; panduan(pRoot); if(ult==1) return false; else return true; } };