ACWING72. Árbol binario equilibrado (para probar la seguridad de la oferta)

nodo raíz del árbol binario de entrada, la determinación árbol no es un árbol binario equilibrado.

Si la profundidad de los subárboles izquierdo y derecho de cualquier nodo de un árbol binario difiere en no más de un punto, entonces es un árbol binario equilibrado.

nota:

Disposiciones árbol vacío es un árbol binario equilibrado.
Muestra
de entrada: binario [5,7,11, null, null, 12,9 , null, null, null, null] como se muestra a continuación,
5
/
711
/
129

Salida: true

class Solution {
public:
    bool isBalanced(TreeNode* root) {
        if(!root) return true;
        if(judge(root,1) == -1) return false;
        return true;
    }

    int judge(TreeNode* root,int dep) {
        int Left = dep,Right = dep;
        if(root -> left) Left = judge(root -> left,dep + 1);
        if(root -> right) Right = judge(root -> right,dep + 1);
        if(!root -> left && !root -> right) return dep;
        if(Left == -1 || Right == -1) return -1;
        if(abs(Left - Right) <= 1) return Left + Right;
        else return -1;
    }
};
Publicados 844 artículos originales · ganado elogios 28 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/tomjobs/article/details/104966397
Recomendado
Clasificación