De acuerdo con las secuencias de recorrido posterior al orden y en orden del árbol binario, se obtiene la secuencia de recorrido jerárquico

1. Tema

Existe un árbol binario donde cada nodo se identifica con una letra mayúscula. Hay dos conjuntos de letras, que representan respectivamente los resultados del recorrido posterior al pedido y el recorrido en orden. Muestra los resultados del recorrido jerárquico.

Descripción de entrada: ingrese la secuencia de la primera línea, lo que significa recorrido posterior al pedido (hijo izquierdo -> hijo derecho -> nodo raíz);

Ingrese la secuencia de la segunda línea, lo que significa recorrido en orden (hijo izquierdo -> nodo raíz -> hijo derecho).

Salida Descripción
Muestra el resultado del recorrido de la jerarquía.

Ejemplo:
Introduzca
CBEFDA

CBAEDF

Salida
ABDCEF

2. Análisis

1) El último del recorrido posterior al pedido debe ser el nodo raíz

2) Confirme la posición del nodo raíz obtenido en 1) en el recorrido en orden. El lado izquierdo del nodo es el subárbol izquierdo del nuevo árbol binario con él como el nodo raíz, y el lado derecho del nodo es el nuevo árbol binario con él como nodo raíz subárbol derecho.

3) El recorrido posterior obtiene que el lado izquierdo del nodo raíz son todos sus nodos de subárbol izquierdo y derecho

3. Solución de lenguaje Java:

public static void od007(){ 
   Scanner scanner=new Scanner(System.in); 
   List<String> hou=Arrays.stream(scanner.nextLine().split("")).collect(Collectors.toList()); 
   List<String> zhong=Arrays.stream(scanner.nextLine().split("")).collect(Collectors.toList()); 
   escáner.cerrar(); 
   String gen=hou.get(hou.size()-1); 
   LinkedList<String> cola=nueva LinkedList<>(); 
   cola.add(gen); 
   Cadena resultado=""; 
   while (cola.tamaño()!=0){ 
       String start=cola.getFirst(); 
       int startIndex=zhong.indexOf(inicio); 
       List<String> zhongLeft=nuevo ArrayList<>(); 
       for (int i=0;i<startIndex;i++){ 
           zhongLeft. 
       }
       List<String> zhongRight=nuevo ArrayList<>(); 
       for (int i=startIndex+1;i<zhong.size();i++){ 
           zhongRight.add(zhong.get(i)); 
       } 
       int startIndex2=hou.indexOf(inicio); 
       List<String> houLeft=new ArrayList<>(); 
       for (int i=0;i<startIndex2;i++){ 
           if (zhongLeft.contains(hou.get(i))){ 
               houLeft.add(i,hou.get(i)); 
           } 
       } 
       List<String> houRight=new ArrayList<>(); 
       for (int i=0;i<startIndex2;i++){ 
           if (zhongRight.contains(hou.get(i))) houRight.add(hou.get(i)); 
       }
       if (houLeft.size()!=0&&!result.contains(houLeft.get(houLeft.size()-1))){ 
           cola.add(houLeft.get(houLeft.size()-1)); 
       } 
       if (houRight.size()!=0&&!result.contains(houLeft.get(houLeft.size()-1))){ 
           cola.add(houRight.get(houRight.size()-1)); 
       }; 
       resultado=resultado+inicio; 
       cola.removeFirst(); 
   } 
   System.out.println(resultado); 
}

 

Supongo que te gusta

Origin blog.csdn.net/qq_43780761/article/details/126863104
Recomendado
Clasificación