Esta é uma operação comum para a árvore binária. Resumo:
Vamos definir a estrutura de dados do nó, como segue:
Copie o código do código da seguinte forma:
Classe Treenode {
valor de char;
Treenode esquerdo = nulo;
Treenode Right = NULL;
Treenode (char _val) {
this.val = _val;
}
}
1. Profundidade da árvore binária
Isso pode ser recuperado, e a profundidade da subárvore esquerda é encontrada, e a profundidade da infância direita pode ser usada.
Copie o código do código da seguinte forma:
// obtenha a profundidade máxima
Public static int getMaxDepth (Treenode Root) {{
if (root == null)
Retornar 0;
outro {
int esquerd = getMaxDepth (root.left);
int certo = getMaxDepth (root.richt);
Retornar 1 + math.max (esquerda, direita);
}
}
2. Largura binária
Use a fila para atravessar a camada de árvore binária. Depois que a camada anterior é concluída, todos os nós na próxima camada foram colocados na fila. Por analogia, você pode encontrar a largura máxima da árvore binária na próxima camada.
Copie o código do código da seguinte forma:
// Obtenha a largura máxima
public static int getMaxWidth (Timeode Root) {{
if (root == null)
Retornar 0;
Fila <tar
int maxwitdth = 1;
fila.add (root);
While (true) {
int len = fila.size ();
if (len == 0)
Quebrar;
Enquanto (len> 0) {// se a camada atual, existem nós
Tratar t = fileue.poll ();
Len-;
if (t.left! = null)
fila.add (T.Left);
if (t.right! = null)
fila.add (t.right);
}
maxwitdth = math.max (maxwitdth, fileue.size ());
}
Retornar maxwitdth;
}