La profundidad máxima de la p16 árbol binario (leetcode 104)

A: las ideas de resolución de problemas

Esta pregunta puede ser recursivos y métodos iterativos para resolver.

Dos: ejemplos de código completo (C ++ versión y la versión Java)

Recursión C ++:

clase de soluciones 
{ 
público :
     int max ( int a, int b) 
    { 
        volver a> b? a: b; 
    } 

    Int maxDepth (TreeNode * raíz) 
    { 
        si (raíz == NULL) volver  0 ; 

        retorno máx (maxDepth (Raíz> izquierda), maxDepth (Raíz> derecha)) + 1 ; 
    } 
};

La recursividad de Java:

clase de soluciones {
     pública  int maxDepth (raíz TreeNode) 
    { 
           si (raíz == nula ) de retorno  0 ; 
           
           retorno Math.max (maxDepth (root.left), maxDepth (root.right)) + 1 ; 
    } 
}

Métodos iterativos C ++:

// Tiempo: O (n), el espacio: O (n) 
la clase de soluciones 
{ 
público :
     int maxDepth (TreeNode * raíz) 
    { 
        si (raíz == NULL) volver  0 ; 

        cola <TreeNode *> cola; 
        queue.push (raíz); 

        int profundidad = 0 ; 

        mientras que (! queue.empty ()) 
        { 
            int size = queue.size (); 

            para ( int i = 0 ; i <tamaño; i ++ ) 
            { 
                TreeNode * t =queue.front (); 
                queue.pop (); 

                si (t> izquierda = NULL!) queue.push (t-> izquierda);
                si (t> derecha = NULL!) queue.push (t-> derecha); 
            } 

            Profundidad ++ ; 
        } 

        Devolver profundidad; 
    } 
};

método iterativo de Java:

clase de soluciones {
     pública  int maxDepth (raíz TreeNode) 
    { 
           si (raíz == nula ) de retorno  0 ; 
           Queue <TreeNode> cola = nuevo LinkedList <> ();
           int profundidad = 0 ; 

           queue.add (raíz); 

           mientras que (! queue.isEmpty ()) 
           { 
               int size = queue.size (); 

               para ( int i = 0 ; i <tamaño; i ++ ) 
               { 
                   TreeNode t =queue.poll (); 
                   
                   si (! t.left = nula ) queue.add (t.left);
                   si (! t.right = nula ) queue.add (t.right); 
               } 

               Profundidad ++ ; 
           } 

           Devolver profundidad; 
    } 
}

 

Supongo que te gusta

Origin www.cnblogs.com/repinkply/p/12455739.html
Recomendado
Clasificación