leetcode题解(四十):102. Binary Tree Level Order Traversal

在这里插入图片描述
二叉树的层序遍历
按照输入输出先进先出的思路,这里用栈结构

public class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        List<List<Integer>> wrapList = new LinkedList<List<Integer>>();
        
        if(root == null) return wrapList;
        
        queue.offer(root);
        while(!queue.isEmpty()){
        	//记录层次元素数量,比如第一层有一个元素,第二层两个,...也可能缺失
            int levelNum = queue.size();
            List<Integer> subList = new LinkedList<Integer>();
            for(int i=0; i<levelNum; i++) {
                if(queue.peek().left != null) queue.offer(queue.peek().left);
                if(queue.peek().right != null) queue.offer(queue.peek().right);
                subList.add(queue.poll().val);
            }
            wrapList.add(subList);
        }
        return wrapList;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43869024/article/details/89516597