递归判断平衡二叉树
平衡二叉树
http://www.nowcoder.com/questionTerminal/8b3b95850edb4115918ecebdf1b4d222
递归检查root的左右孩子是不是平衡树。如果没有,下面这个树也会被认为是平衡树了。
class Solution { public: /* 此处算的高度都只是树的最大高度,左右子树最大高度相同,不代表这棵树就是平衡的,还要再对子树分别判断。 */ int getDepth(TreeNode* root) { if(!root) { return 0; } return 1+max(getDepth(root->left),getDepth(root->right)); } bool IsBalanced_Solution(TreeNode* root) { if(!root) return true; int left=getDepth(root->left); int right=getDepth(root->right); if(abs(left-right)>1) { return false; } return IsBalanced_Solution(root->left)&&IsBalanced_Solution(root->right); } };