牛客网 剑指offer 平衡二叉树

时间限制:1秒空间限制:32768K热度指数:6833

**算法知识视频讲解

题目描述

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

题解:判断是否为平衡二叉树的条件是左孩子的高度与右孩子的高度相差至少为2时就不平衡,否则平衡,所以定义一个getheight函数来获得结点的高度,然后进行递归判断是否为平衡二叉树即可

注意当传入的结点为空时则为平衡二叉树,因为此时遍历完一条边,需要计算高度来判断是否为平衡二叉树,所以需要返回true.

代码如下:

class Solution {
public:
    int getHeight(TreeNode* pRoot){
        if(pRoot==NULL)return 0;
        int l=getHeight(pRoot->left);
        int r=getHeight(pRoot->right);
        return l>r?l+1:r+1;
    }
    bool IsBalanced_Solution(TreeNode* pRoot) {
		if(pRoot==NULL)return true;
        if(IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right)){
            int l=getHeight(pRoot->left);
            int r=getHeight(pRoot->right);
            if(l>r&&l-r>=2){
                return false;
            }else if(r>l&&r-l>=2){
                return false;
            }else{
                return true;
            }
        }
        return false;               
    }	
};

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦