您的位置:首页 > 编程语言 > C语言/C++

Balanced Binary Tree

2016-07-16 17:57 489 查看
一、问题描述

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.

三、代码

<pre name="code" class="cpp">/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int depth(TreeNode* node){
return node ? max(depth(node ->left),depth(node -> right)) + 1 : 0;
}
bool isBalanced(TreeNode* root) {
return root ? isBalanced(root -> left) && isBalanced(root -> right)
&& abs(depth(root -> left) - depth(root -> right)) <= 1 : true;
}
};

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ leetcode