1 题目描述
本题要求判断给定的二叉树是否是平衡二叉树
平衡二叉树的性质为: 要么是一棵空树,要么任何一个节点的左右子树高度差的绝对值不超过 1。
一颗树的高度指的是树的根节点到所有节点的距离中的最大值。
3 代码实现
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return bool布尔型
*/
bool isBalanced(TreeNode* root) {
int depth = 0;
return isBalancedHelper(root, depth);
}
bool isBalancedHelper(TreeNode* root, int &depth){
if(root == NULL){
depth = 0;
return true;
}
int leftSubtreeDepth, rightSubtreeDepth;
if(isBalancedHelper(root->left, leftSubtreeDepth) && isBalancedHelper(root->right, rightSubtreeDepth))
if(abs(leftSubtreeDepth - rightSubtreeDepth) <= 1){
depth = 1 + max(leftSubtreeDepth, rightSubtreeDepth);
return true;
}
return false;
}
};
4 运行结果
运行时间:6ms
占用内存:612k