一起来刷算法题

平衡二叉树

2019-05-06  本文已影响0人  cherryleechen

时间限制:1秒 空间限制:32768K

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

我的代码

class Solution {
public:
    bool IsBalanced_Solution(TreeNode* pRoot) {
        //从上往下判断的话,每次判断父节点时,对应的子节点都会遍历一遍。
        //采用从下往上判断,如果是,返回高度值;如果不是,返回-1。
        return Helper(pRoot)==-1?false:true;
    }
    int Helper(TreeNode* pRoot){
        if(pRoot==nullptr)
            return 0;
        int left=Helper(pRoot->left);
        if(left==-1)
            return -1;
        int right=Helper(pRoot->right);
        if(right==-1)
            return -1;
        return abs(left-right)<2?1+max(left,right):-1;
    }
};

运行时间:3ms
占用内存:484k

上一篇下一篇

猜你喜欢

热点阅读