输出要求

输出数组,按层输出,每层一个数组

java 实现


    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    }


    public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {

        ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
        if(null==root){
            return lists;
        }
        // 辅助队列
        Queue<TreeNode> q = new LinkedList();
        q.add(root);
        while (!q.isEmpty()) {
            ArrayList<Integer> list = new ArrayList<>();

            // 下一层的缓存
            ArrayList<TreeNode> children = new ArrayList<>();

            // 队列为空当前层处理完毕
            while (!q.isEmpty()) {
                TreeNode node = q.poll();
                list.add(node.val);
                // 左树添加到缓存
                if (null != node.left) {
                    children.add(node.left);
                }
                // 右树添加到缓存
                if (null != node.right) {
                    children.add(node.right);
                }
            }

            // 输出当前层
            lists.add(list);
            // 当前层的后代入队
            q.addAll(children);
        }

        return lists;
    }



数据结构      二叉树 层次遍历

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!