Leetcode102. 二叉树的层序遍历(经典dfs)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode102. 二叉树的层序遍历(经典dfs)相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

解题思路

这是一道非常经典的dfs题目。我们每次都将节点加入队列,然后通过队列去寻找节点的左右子节点,如果存在就加入队列。使用队列能保证他们的顺序。具体思路看代码。

代码

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> ans = new ArrayList<>();
        Deque<TreeNode> queue = new LinkedList<>();
        if(root == null)    //特判
            return ans;
        queue.offer(root);  //将root加入队列
        while(!queue.isEmpty()) {   //如果队列不为空就代表还有节点在队列中
            List<Integer> res = new ArrayList<>();  //储存每一层的答案
            int size = queue.size();    //一定要先记录队列大小,因为要把上一层的所有元素全部遍历出队
            for(int i = 0; i < size; i++) {
                TreeNode t = queue.poll();  //出队
                res.add(t.val); //加入答案
                if(t.left != null)  //如果有左节点加入队列
                    queue.offer(t.left);
                if(t.right != null) //如果有右节点加入队列
                    queue.offer(t.right);
            }
            ans.add(res);   //加入每一层的答案
        }
        return ans;
    }
}

复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

以上是关于Leetcode102. 二叉树的层序遍历(经典dfs)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-102-二叉树的层序遍历

leetcode-102二叉树的层序遍历

#yyds干货盘点# leetcode-102. 二叉树的层序遍历

LeetCode 102. 二叉树的层序遍历

[JavaScript 刷题] 搜索 - 二叉树的层序遍历, leetcode 102

leetcode102. 二叉树的层序遍历