Sword se refiere al árbol de búsqueda binaria OfferJZ26 y a la lista doblemente enlazada (JavaScript)

Límite de tiempo: C / C ++ 1 segundo, otros idiomas 2 segundos Límite de espacio: C / C ++ 64M, otros idiomas 128M Hot index: 514583
Puntos de conocimiento de esta pregunta: Divide y conquista

Descripción del título
Ingrese a un árbol de búsqueda binaria y convierta el árbol de búsqueda binaria en una lista ordenada doblemente vinculada. Es necesario que no se puedan crear nuevos nodos, y solo se puede ajustar el punto del puntero del nodo en el árbol.

ps: La solución a este problema tiene un nuevo nodo, que no resuelve el problema.
Idea: recorrido en orden, izquierdo, medio y derecho, el subárbol derecho del nodo del nodo que apunta al nodo apunta al nodo recursivo actual pRootOfTree, el subárbol izquierdo de pRootOfTree apunta al nodo del nodo, y luego el nodo del nodo se mueve hacia atrás , que es igual a node = pRootOfTree

function Convert(pRootOfTree){
    
    
    let node = null,realHead = null
    CovertSub(pRootOfTree)
    return realHead
    
    function CovertSub(pRootOfTree){
    
    
        if(!pRootOfTree) return null
        CovertSub(pRootOfTree.left)
        if(!node){
    
    
            node = pRootOfTree
            realHead = pRootOfTree
        }else{
    
    
            node.right = pRootOfTree
            pRootOfTree.left = node
            node = pRootOfTree
        }
        CovertSub(pRootOfTree.right)
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_44523860/article/details/115179889
Recomendado
Clasificación