102. 二叉树的层序遍历

题目

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

题解

广度搜索算法应用,将当前层的数据保存到Queue中,并记录当前层数据个数,出队列的同时,将该节点的子节点入队列,直到该层数据全部出队列,然后再进行下一层数据遍历。

public List> levelOrder(TreeNode root) {
    List> res = new ArrayList<>();
    if (root == null) {
        return res;
    }
    Queue qu = new LinkedList<>();
    qu.offer(root);
    while (!qu.isEmpty()) {
        int levelSize = qu.size();
        List inData = new ArrayList<>();
        while (levelSize-- > 0) {
            TreeNode td = qu.poll();
            inData.add(td.val);
            if (td.left != null) {
                qu.offer(td.left);
            }
            if (td.right != null) {
                qu.offer(td.right);
            }
        }
        res.add(inData);
    }
    return res;
}

你可能感兴趣的:(102. 二叉树的层序遍历)