Y en el que un árbol binario dado de un nodo, encontrar el siguiente nodo en un orden de recorrido preorden y vuelve.

Una necesidad de recordar lo que el tema.

Título Descripción
Dado un árbol binario y un nodo que es, encontrar el siguiente nodo en un orden de recorrido preorden y vuelve. Tenga en cuenta que el nodo en el árbol contiene no sólo los nodos hijos izquierdo y derecho, el nodo padre contiene un puntero que apunta a.

solución del problema

Siguiente nodo de árbol binario:
La regla de desplazamiento, cuando está presente en el subárbol derecho del nodo, el siguiente nodo de la secuencia de recorrido de más a la izquierda para el subárbol derecho nodo. Sin embargo, cuando el nodo no existe subárbol derecho, a finde recorrido del siguiente nodo en el nodo debe tener para los padres. Pero ¿qué es lo qué generación?
secuencia de las características de recorrido, dejó el nodo padre debe haber sido visitada secuencia de recorrido, por lo que el siguiente nodo debe ser el primero en el nodo padre derecha del camino nodo padre.

Inorder resultados de recorrido: d-> b-> h-> e- > i-> a-> f-> C-> g
a partir de ajustes a través de los resultados ver Análisis explicaciones.

Código es el siguiente:

/*
public class TreeLinkNode {
    int val;
    TreeLinkNode left = null;
    TreeLinkNode right = null;
    TreeLinkNode next = null;

    TreeLinkNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public TreeLinkNode GetNext(TreeLinkNode pNode)
    {

 if(pNode == null) return null;
 
        if(pNode.right != null){
            pNode = pNode.right;
            while(pNode.left != null)
                pNode = pNode.left;
            return pNode;
        }
 
        while(pNode.next != null){
            if(pNode.next.left == pNode)
                return pNode.next;
            pNode = pNode.next;
        }
        return null;
    }
}

Supongo que te gusta

Origin www.cnblogs.com/dearnotes/p/12563245.html
Recomendado
Clasificación