Recorrido de secuencia del árbol binario y el triángulo de Yanghui

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
Inserte la descripción de la imagen aquí

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
Inserte la descripción de la imagen aquí

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;
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_52142731/article/details/115350477
Recomendado
Clasificación