【leetcode】Balanced Binary Tree

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.


题解:一A的题,写一个递归函数height计算树的高度,然后递归实现isBalance函数即可。代码如下:

 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     bool isBalanced(TreeNode *root) {

13         if(root == NULL)

14             return true;

15         if(abs(height(root->left)-height(root->right)) > 1)

16             return false;

17         return isBalanced(root->left) && isBalanced(root->right);

18     }

19     int height(TreeNode *root){

20         if(root == NULL)

21             return 0;

22         int left = height(root->left);

23         int right = height(root->right);

24         return 1+(left>right?left:right);

25     }

26 };

 

 

你可能感兴趣的:(LeetCode)