参考了这篇博文的想法
代码:
1 int balancedp(TreeNode *root) { 2 if (!root) 3 return 0; 4 5 int l = balancedp(root->left); 6 int r = balancedp(root->right); 7 if ((l | r) < 0 || abs(l - r) > 1) 8 return -1; 9 return max(l, r) + 1; 10 } 11 12 bool isBalanced(TreeNode *root) { 13 return balancedp(root) >= 0; 14 }
《Cracking the code》一书中提到了另一种方法,即看看根节点的最大深度和最小深度只差是否大于1即可。刚好Leetcode有求最大深度和最小深度的题目,代码直接拿过来用即可。
1. 求根节点最大深度
2. 求根节点最小深度
3. 相减是否大于1