题目链接:https://oj.leetcode.com/problems/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)如果为空数,就返回0。(2)如果树不为空,判断其左子树和右子树,并且其左子树和右子树的高,绝对值相差小于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) {
int height;
return isAVL(root,height);
}
bool isAVL(TreeNode *root,int &height) {
if (root == NULL) {
height = 0;
return true;
}
int heightLeft;
int heightRight;
bool resultLeft = isAVL(root->left,heightLeft);
bool resultRight = isAVL(root->right,heightRight);
if (resultLeft && resultRight &&
((heightLeft - heightRight) >= -1 && (heightLeft - heightRight) <= 1)) {
height = heightLeft > heightRight ? heightLeft+1 : heightRight+1;
return true;
} else {
height = heightLeft > heightRight ? heightLeft+1 : heightRight+1;
return false;
}
}
};
转载请注明作者:vanish_dust