判断一颗二叉树是否是平衡二叉树

判断一颗二叉树是否是平衡二叉树

附一个代码的github链接:
平衡二叉树判断的c++代码
刚刚开始整理,后面会不断完善的哈!

首先先明确平衡二叉树的性质:

1、左子树深度与右子树深度差不大于1;
2、左右子树都是平衡二叉树;
根据两条性质,判断是否为平衡二叉树的关键是:
1、计算树的深度
2、递归

下面贴出代码:

#include <iostream>
/*调用深度计算函数,且计算树深度时,若为-1说明子树不平衡,
直接返回-1即可*/

bool IsBalanced_Solution(TreeNode* pRoot) {
        return getdepth(pRoot)!=-1;
    }

int getdepth(TreeNode* pRoot){
        if(pRoot == NULL)//递归终止条件
            return 0;
        int left = getdepth(pRoot->left);//递归计算左子树深度
        if(left == -1)
            return left;
        int right = getdepth(pRoot->right);//递归计算右子树深度
        if(right == -1)
            return right;
        int ret = (abs(left-right)>1 ? -1:1+max(left,right));//返回当前树深度
        return ret;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值