Programador entrevista clásico dorado-preguntas de la entrevista 04.04. Consultar saldo

1. Introducción al tema

Implemente una función para verificar si el árbol binario está equilibrado. En este problema, la definición de árbol equilibrado es la siguiente: Para cualquier nodo, la diferencia de altura entre sus dos subárboles no excede 1.


Ejemplo 1:
Dado un árbol binario [3,9,20, null, null, 15,7]
    3
   / \
  9 20
    / \
   15 7
devuelve verdadero.
Ejemplo 2:
Dado un árbol binario [1,2,2,3,3, null, null, 4,4]
      1
     / \
    2 2
   / \
  3 3
 / \
4 4
devuelve falso.

Fuente: LeetCode (LeetCode)
Enlace: https://leetcode-cn.com/problems/check-balance-lcci Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos ideas para resolver problemas

       Esta pregunta examina el cálculo de la altura del árbol binario y requiere que la diferencia de altura entre los subárboles izquierdo y derecho de cada nodo no pueda ser mayor que 1.

Tres, código de resolución de problemas

class Solution {
private:
    bool flag = true;
public:
    //求二叉树的高度问题
    bool isBalanced(TreeNode* root) {
        depth(root);
        return flag;
    }


    int depth(TreeNode* root)
    {
        if(!root)
            return 0;
        int left = depth(root->left);
        int right = depth(root->right);
        if(abs(left - right) > 1)  //当左右子树的高度差大于1时,该标记就会被记录下来
            flag = false;
        return max(left, right) + 1;
    }
};

Cuatro, resultados de resolución de problemas

Supongo que te gusta

Origin blog.csdn.net/qq_39661206/article/details/108055292
Recomendado
Clasificación