欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

102.二叉树的层序遍历(广度优先遍历BFS----Breadth_First_Search)

程序员文章站 2022-03-26 18:23:47
...

题目:

102.二叉树的层序遍历(广度优先遍历BFS----Breadth_First_Search)

思路:

利用广度优先遍历的思想,用一个队列来做到层序遍历
队列不为空时,每次循环对当前层的节点数做操作,并确定下一层节点

代码:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> ans = new ArrayList<List<Integer>>();
        Deque<TreeNode> deque = new LinkedList<TreeNode>();
        if(root == null)
            return ans;
        deque.offer(root);
        while(!deque.isEmpty()){
            List<Integer> level_ans = new ArrayList<Integer>();
            int len =deque.size();//确定每层的个数
            for(int i = 0;i < len;i++){//提出当前层,确定下一层
                TreeNode node = deque.poll();
                level_ans.add(node.val);
                if(node.left != null)
                    deque.offer(node.left);
                if(node.right != null)
                    deque.offer(node.right);
            }
            ans.add(level_ans);
        }
        return ans;
         
    }
}

复杂度分析:

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

相关标签: leetcode_二叉树