Travessia de sequência
Travessia de sequência
Sabemos que a travessia da árvore binária é dividida emTravessia de profundidade e travessia de largura
A travessia em profundidade é dividida emTraversal de primeira ordem, travessia de ordem intermediária, traversal de pós-ordem
A largura da primeira travessia é Travessia de sequência
Como o nome indica, a passagem da sequência é uma passagem camada por camada, de cima para baixo, da esquerda para a direita, conforme mostrado na figura abaixo: O resultado da passagem da sequência da camada é: abcdefg
Ideias:
Como atravessar a sequência da árvore binária? Primeiro obtemos o nó raiz, em seguida, visitamos o nó esquerdo, visitamos o nó direito ...
Podemos colocar os nós na fila e, em seguida, colocar os nós esquerdo e direito na fila, respectivamente, e, finalmente, gerar uma saída para obter travessia de sequência.
Código:
public class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val) {
this.val = val;
}
@Override
public String toString() {
return String.format("TreeNode{%c}", val);
}
}
import java.util.LinkedList;
import java.util.Queue;
public class levelTraversal {
public void level(TreeNode root) {
if (root == null) {
return;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode node = queue.remove();
System.out.println((char) node.val);
if (node.left != null) {
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
}
}
}
/**
*
*/
public class Test {
public static void main(String[] args) {
TreeNode a = new TreeNode('a');
TreeNode b = new TreeNode('b');
TreeNode c = new TreeNode('c');
TreeNode d = new TreeNode('d');
TreeNode e = new TreeNode('e');
TreeNode f = new TreeNode('f');
TreeNode g = new TreeNode('g');
TreeNode h = new TreeNode('h');
a.left = b; a.right = c;
b.left = d; b.right = e;
c.left = f; c.right = g;
e.right = h;
levelTraversal levelTraversal=new levelTraversal();
levelTraversal.level(a);
}
}
resultado:
Determine se uma árvore binária é uma árvore binária completa
A árvore binária completa é derivada da árvore binária completa. Para uma árvore binária com uma profundidade de k e n nós, se e somente se nenhum de seus nós corresponder aos nós numerados de 1 a n na árvore binária completa de profundidade k, é uma árvore binária completa.
A árvore binária completa é um tipo especial de árvore binária completa.
Podemos percorrer a sequência da árvore binária (incluindo nós vazios).
Resultado da árvore binária completa: abcdefg #####
Resultado da árvore binária incompleta: abcd ## ef ###
Quando nulo é encontrado na fila Quando, se o seguinte for nulo, então é uma árvore binária completa, caso contrário, não é uma árvore binária completa;
Link do tópico:
Teste de integridade da árvore binária
class Solution {
public boolean isCompleteTree(TreeNode root) {
if (root == null) {
return true;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
boolean flag = false;
while (!queue.isEmpty()) {
TreeNode node = queue.remove();
if (node == null) {
flag = true;
continue;
}
if (flag) {
return false;
}
queue.add(node.left);
queue.add(node.right);
}
return true;
}
}