首页 > 代码库 > 【LeetCode】Balanced Binary Tree

【LeetCode】Balanced Binary Tree

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.

 

递归来做很简单。

一棵树要满足平衡条件必须同时满足以下三个全部条件:

1、左子树满足平衡条件

2、右子树满足平衡条件

3、左右子树深度差不超过1

 

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool isBalanced(TreeNode *root) {        if(root == NULL)            return true;        if(isBalanced(root->left) && isBalanced(root->right))        {            int left = height(root->left);            int right = height(root->right);            if(fabs(left-right) <= 1)                return true;            else                return false;        }        else             return false;    }    int height(TreeNode* root)    {        if(root == NULL)            return 0;        int left = height(root->left);        int right = height(root->right);        return max(left,right)+1;    }};

【LeetCode】Balanced Binary Tree