天天看點

平衡二叉樹

平衡二叉樹

判斷每個節點的左右子樹最大深度差,遞歸,dfs1形參root可判斷整棵樹是否為平衡二叉樹,邊界傳回0,提前不滿足傳回,最後傳回,提前不滿足用深度,dfs2求最大深度,形參root可以求出root樹的最大深度

精确定義

dfs1,形參root判斷root樹是否為平衡二叉樹,空節點邊界傳回true,按照深度提前傳回

dfs2,形參root求出root數的最大深度,root為空邊界傳回0,按照深度不符合提前傳回,最後傳回

class Solution {
public:
    bool isBalanced(TreeNode* root) {
        return dfs1(root);
    }
    bool dfs1(TreeNode*root){
        if(!root)return true;
        if(abs(dfs2(root->left)-dfs2(root->right))>1)return false;
        return dfs1(root->left)&&dfs1(root->right);
    }
    int dfs2(TreeNode*root){
        if(!root)return 0;
        return 1+max(dfs2(root->left),dfs2(root->right));
    }
};      

踩過的坑

abs的形參隻有一個,二叉搜尋樹需要每個節點的左右子樹深度差小于等于1

上一篇: 平衡二叉樹
下一篇: 平衡二叉樹