輸入一棵二叉樹,判斷該二叉樹是不是平衡二叉樹。code
在這裏,咱們只須要考慮其平衡性,不須要考慮其是否是排序二叉樹排序
遞歸思想,先計算左子樹深度,再計算右子樹深度,若是兩子樹深度相差大於1則返回-1,不然返回二者之間較大者+1遞歸
C++io
class Solution { public: bool IsBalanced_Solution(TreeNode* pRoot) { return IsBalanced(pRoot) >= 0; } int IsBalanced(TreeNode* pRoot){ if(pRoot == nullptr) return 0; int left = IsBalanced(pRoot->left); int right = IsBalanced(pRoot->right); int delta = abs(left - right); if(delta <= 1 && left >= 0 && right >= 0) return max(left, right) +1; else return -1; } };