Recorrido de secuencia del árbol binario y el triángulo de Yanghui
La razón por la que estas dos preguntas se juntan es porque sus tipos de valor de retorno son == Lista <Lista <Intero>> == Los elementos incluidos en la lista enlazada son listas enlazadas.
Podemos comparar y estudiar juntos.
Recorrido de secuencia del árbol binario
Título de LeetCode: Enlace: Recorrido jerárquico del árbol binario
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list = new ArrayList<>();
if (root == null) {
return list;
}
Queue<TreeNode> queue = new LinkedList<>();
Queue<Integer> level = new LinkedList<>();
queue.add(root);
level.add(0);
while (!queue.isEmpty()) {
TreeNode node = queue.remove();
int le = level.remove();
if (le >= list.size()) {
List<Integer> row = new ArrayList<>();
list.add(row);
}
list.get(le).add(node.val);
if (node.left != null) {
queue.add(node.left);
level.add(le + 1);
}
if (node.right != null) {
queue.add(node.right);
level.add(le + 1);
}
}
return list;
}
}
Triángulo de Yanghui
Título de LeetCode: Enlace: Triángulo de Yanghui
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list = new ArrayList<>();
List<Integer> row = new ArrayList<>();
row.add(1);
list.add(row);
if (numRows == 1) {
return list;
}
row = new ArrayList<>();
row.add(1);
row.add(1);
list.add(row);
if (numRows == 2) {
return list;
}
for (int i = 3; i <= numRows; i++) {
row = new ArrayList<>();
row.add(1);
for (int j = 2; j < i; j++) {
List<Integer> prevRow = list.get(i - 2);
int a = prevRow.get(j - 2);
int b = prevRow.get(j - 1);
row.add(a + b);
}
row.add(1);
list.add(row);
}
return list;
}
}