Esta es una operación común para el árbol binario. Resumen:
Establezcamos la estructura de datos del nodo, como sigue:
Copiar código del código de la siguiente manera:
Clase TreeNode {
valor de char;
TreeNode izquierda = nulo;
TreeNode Right = Null;
TreeNode (char _val) {
this.val = _val;
}
}
1. Profundidad del árbol binario
Esto se puede reponer, y se encuentra la profundidad del subárbol izquierdo y se puede usar la profundidad del árbol infantil derecho.
Copiar código del código de la siguiente manera:
// Obtener la profundidad máxima
Public static int getMaxdepth (treeNode root) {{
if (root == null)
Regresar 0;
demás {
int izquierdO = getMaxdepth (root.left);
int right = getMaxdepth (root.richt);
Devolver 1 + math.max (izquierda, derecha);
}
}
2. Ancho binario
Use la cola para atravesar la capa de árbol binario. Después de completar la capa anterior, todos los nodos en la siguiente capa se han colocado en la cola. Por analogía, puede encontrar el ancho máximo del árbol binario en la siguiente capa.
Copiar código del código de la siguiente manera:
// Obtener el ancho máximo
public static int getMaxWidth (TIMEODE ROOT) {{
if (root == null)
Regresar 0;
Cola <alquitrán
int maxwitdth = 1;
Queue.Add (raíz);
While (verdadero) {
int len = queue.size ();
if (len == 0)
Romper;
While (len> 0) {// Si la capa actual, hay nodos
Tratar t = queue.poll ();
Len-;
if (t.left! = null)
Queue.add (T.Left);
if (t.right! = null)
Queue.add (T.Right);
}
maxwitdth = math.max (maxwitdth, queue.size ());
}
Devolver maxwitdth;
}