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

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

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

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;
    }

猜你喜欢

转载自blog.csdn.net/qq_34606546/article/details/84923159