LeetCode --- Balanced Binary Tree

题目链接

题意: 给定一棵二叉树, 判断是否为平衡二叉树, 这里的平衡二叉树指的是:每个结点的左右子树的深度之差不超过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 };

 

你可能感兴趣的:(LeetCode)