la complejidad del espacio árbol dfs algoritmo

Adam:

Estoy evaluando la complejidad del espacio de la siguiente algoritmo para invertir un árbol:

public TreeNode invertTree(TreeNode root) {
    if (root == null) {
        return null;
    }
    TreeNode right = invertTree(root.right);
    TreeNode left = invertTree(root.left);
    root.left = right;
    root.right = left;
    return root;
}

Sé que la complejidad espacial es el número de las veces que la pila de llamadas se llama, que es O (h), donde h es la altura del árbol. Pero mi confusión es que en cada nivel de la pila de llamadas, estamos volviendo un árbol, que tiene algo de espacio, ¿por qué estamos sin contar este espacio? Creo que se debe a que el árbol se pasa por la función. Pero ¿cómo se explica por ese espacio? Java es pasado por referencia, cuántos espacio está ocupado por la referencia en cada nivel de la pila de llamadas?

Joni:

El espacio necesario para una referencia de objeto es constante. No depende de lo que se está haciendo referencia. El espacio necesario para la referencia a la raíz del árbol es el mismo que el espacio necesario para una referencia a una hoja.

En general se puede asumir cada llamada a un método en Java toma la misma cantidad de espacio en la pila. No hay manera de asignar memoria en la pila (o, sin embargo, no por lo menos). En este método, no hay objetos se crean o destruyen en el montón, así que el único espacio utilizado es el espacio para los marcos de pila.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=394648&siteId=1
Recomendado
Clasificación