Se me ha dado dos árboles binarios de búsqueda. Por ejemplo, A y B. A continuación, se le pidió a eliminar el árbol B del árbol A.
Por eliminación, me refiero a eliminar todos los nodos presentes en B de A. Nota: B no es necesariamente un subárbol de A.
por ejemplo:
A:
50 / \ 10 75 / / \ 1 60 90
SEGUNDO:
10 / \ 1 75
Resultando árbol debe ser:
50 \ 60 \ 90
Dos enfoques vinieron a la mente:
A1:
nodo * deleteTree (nodo * A, el nodo B *);
Tomar la raíz del árbol B. Eliminar este nodo del árbol Un (por el método normal de eliminación BST). A continuación dividir el problema en dos partes - por el subárbol izquierdo de B y el subárbol derecho de B. Para cada una de las sub-árbol, Recurse. Para el subárbol izquierdo, el nodo que ocupaba el nodo que se suprimió debe servir como la raíz para el árbol A. Para el subárbol derecho, el sucesor finde del nodo eliminado deberían servidor como la raíz para el árbol A.
A2: El otro enfoque es un poco raro. Me parece que el finde y preorden recorrido del árbol A. Busque y elimine todos los nodos en el árbol B usando la búsqueda binaria, junto con la recursividad (nosotros no modificar el orden previo). Finalmente recostruct nuestra BST desde el finde (restante) y el orden previo (sin cambios).
Un problema resuelto: Encontrar una manera eficiente para BST.
Prob B: Encontrar una manera eficiente para cualquier árbol binario (no sólo BST).













