平衡二叉树

2020-07-08  本文已影响0人  WAI_f

题目:

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过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/

上一篇 下一篇

猜你喜欢

热点阅读