C++之平衡二叉树的判定(25)---《那些奇怪的算法》

我们知道,平衡二叉树要求二叉树的左右子树的深度差不超过1,即可以取值为{-1,0,1},同时,空树也为平衡二叉树,知道了这些,我们可以方便的进行平衡二叉树的判定,实现代码如下:

即定义一个求树的深度的一个函数,我们使用递归进行定义,然后我们定义判定树是否为平衡二叉树的函数,同样使用递归定义,因为平衡二叉树的左右子树一定为平衡二叉树!

class Solution {
public:
    bool isBalanced(TreeNode *root) {
        if(!root) return true; 
        else return (abs(depth(root->left)-depth(root->right))<2)&&isBalanced(root->left)&&isBalanced(root->right);
    }
    int depth(TreeNode* root){
        if(!root) return 0;
        if(!root->left&&!root->right) return 1;
        int left=depth(root->left)+1;
        int right=depth(root->right)+1;
        return max(left,right);
    }
};
    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/u014038273/article/details/78789130
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞