美文网首页
102. 二叉树的层序遍历

102. 二叉树的层序遍历

作者: 伶俐ll | 来源:发表于2020-10-12 17:52 被阅读0次

102. 二叉树的层序遍历

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

示例:
二叉树:[3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

代码实现

if (root == null) return new ArrayList<>();
        List<List<Integer>> lists = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()){
            List<Integer> list = new ArrayList<>();
            int size = queue.size();
            while (size != 0){
                TreeNode node = queue.poll();
                list.add(node.val);
                size--;
                if (node.left !=null){
                    queue.add(node.left);
                }
                if (node.right != null){
                    queue.add(node.right);
                }
            }
            lists.add(list);
        }
        return lists;

解题思路

利用队列

  1. 将根节点入队
  2. 循环执行以下操作,直到队列为空
    2.1. 将队头节点出队进行访问
    2.2. 将队头节点的左子节点入队
    2.3. 将队头节点的右子节点入队

相关文章

网友评论

      本文标题:102. 二叉树的层序遍历

      本文链接:https://www.haomeiwen.com/subject/tbazektx.html