Cómo guardar un árbol binario en una matriz de recorrido en orden

Si solo desea almacenar la secuencia en orden del árbol binario, poblar una matriz secuencialmente durante el recorrido en orden es la mejor opción.

  int [tamaño] matriz = nuevo int [tamaño];
 int index = 0;
 void storeInOrder (raíz del nodo) {
	 if (nodo == nulo)
		 regreso;
	 storeInOrder (root.leftChild ());
	 array [index ++] = root.value;
	 storeInOrder (root.rightChild ());
 }

Puede trabajar para devolver la matriz final.

Suponiendo que desea preservar la estructura de árbol, la respuesta más eficiente es almacenar los recorridos en orden y en orden del árbol en matrices separadas.

Dejame explicarte con un ejemplo:

En orden secuencia: DBEAFCG

Secuencia de pedido anticipado: ABDECFG

Si tiene ambos, puede recuperar la estructura de árbol como tal:

En la secuencia de preorden, el primer nodo es la raíz del árbol, es decir, A. Todos los nodos que quedan de A en la secuencia de orden están en el subárbol izquierdo de A (es decir, DBE) y el resto están en el subárbol derecho (es decir, FCG) .

Para cada uno de los subárboles así formados, formamos recursivamente la misma solución. Para el subárbol izquierdo, B es la raíz, ya que viene primero en la secuencia de preorden. D, que queda de B en la secuencia en orden será el hijo izquierdo de B y E será el hijo derecho.

Y así.

Usar Array List funcionará, ya que funciona de manera similar a un vector: –

  public static ArrayList  inorder (TreeNode  root, ArrayList  arr) {
		 if (root == null) {
			 volver arr;
		 }
		 orden (root.left, arr);
		 arr.add (raíz.datos);
		 orden (root.right, arr);
		 volver arr;
	 }

No es posible hacer esto usando una matriz (a menos que se declare global, o siempre que conozca el número de elementos en la matriz de antemano)

  public ArrayList  inordertoal (Nodo nodo, ArrayList  al)
	 {
		 if (nodo == nulo)
			 volver al;
		
		 inordertoal (node.left, al);
		 al.add (nodo.data);
		 inordertoal (node.right, al);
		
		 volver al;
	 }

lo que puedes hacer es suponer un árbol A
ANTES DE CRISTO
D E
puedes almacenarlo en una matriz como
ABCD – – E en una matriz para hacer un seguimiento del niño izquierdo y derecho … pero conduce a un desperdicio de memoria … “-” significa que no contiene nada …