题目:
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
示例:
无
解题方法:
递归题目全凭感觉和题解!从题目来看,判断是否是平衡树需要判断左右子树的深度,所以需要编写一个函数来计算该子树的深度,计算深度的函数也需要递归计算;然后还要判断子树是否是平衡树。
代码和结果:
class Solution {
public:
int max(int a,int b)
{
return a>b?a:b;
}
int depth(TreeNode* root)
{
if(root==NULL)
return 0;
else
return max(depth(root->right)+1,depth(root->left)+1);
}
bool isBalanced(TreeNode* root) {
if(root==NULL)
return true;
else if((abs(depth(root->left)-depth(root->right))<2)&&isBalanced(root->right)&&isBalanced(root->left))
return true;
else
return false;
}
};
运行结果:
原题链接:https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/
网友评论