Recorrido de secuencia de árbol binario de Java (recorrido capa por capa, diferente de la impresión en zigzag)

Descripción del Título

Dado un árbol binario, devuelve el resultado del recorrido de la secuencia del árbol binario (atravesando capa por capa de izquierda a derecha),
por ejemplo:
el árbol binario dado es {3,9,20, #, #, 15,7 },

El resultado de este recorrido de secuencia de árbol binario es
[
[3],
[9,20],
[15,7]
]

Ejemplo 1

entrar

{1,2}

valor de retorno

[[1], [2]]

Ejemplo 2

entrar

{1,2,3,4, #, #, 5}

valor de retorno

[[1], [2,3], [4,5]]
import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
       
        ArrayList<ArrayList<Integer>> reult = new ArrayList<ArrayList<Integer>>();
        
        if(root == null){
            return reult;
        }
        
        ArrayList<Integer> list = null;
        int queueSize = 0;
        LinkedList<TreeNode> queue = new LinkedList();
        queue.offer(root);
        
        while(!queue.isEmpty()){            
            
            list = new ArrayList();
            
            //先存取之前队列中的长度 这样就保证了之前的长度代表二叉树 同一层中节点的个数
            queueSize = queue.size();
            
            //队列中的长度到0 则同一层的出队完成了
            while(queueSize-- > 0){
                TreeNode temp = queue.poll();
                list.add(temp.val);

                if(temp.left!=null){
                    queue.offer(temp.left);
                }

                if(temp.right!=null){
                    queue.offer(temp.right);
                }
            }
            
            reult.add(list);
        }
        
        return reult;
      
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/luzhensmart/article/details/112719254
Recomendado
Clasificación