题意: 给定一棵二叉树, 判断是否为平衡二叉树, 这里的平衡二叉树指的是:每个结点的左右子树的深度之差不超过1。
附上代码:
1 /**
2 * Definition for binary tree
3 * struct TreeNode {
4 * int val;
5 * TreeNode *left;
6 * TreeNode *right;
7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8 * };
9 */
10 class Solution {
11 public:
12 int isBalanced_helper(TreeNode *root, bool &result) {
13 if (root == NULL) return 0;
14 if (!result) return 0;
15 int leftDepth = isBalanced_helper(root->left, result);
16 int rightDepth = isBalanced_helper(root->right, result);
17 if (abs(leftDepth - rightDepth) > 1) result = false;
18 // prevent overwrite of "result"
19 if (!result) return 0;
20 return max(leftDepth, rightDepth) + 1;
21 }
22
23 bool isBalanced(TreeNode *root) {
24 bool result = true;
25 isBalanced_helper(root, result);
26 return result;
27 }
28 };