层序遍历

  |   0浏览

什么是层序遍历

层序遍历就是从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。例如这样一个二叉树:[3,9,20,null,null,15,7]层序遍历返回结果为:层序遍历

代码实现:

ArrayList<ArrayList<Integer>> Print(TreeNode pRoot){        ArrayList<ArrayList<Integer>> res = new ArrayList<>();        if (pRoot == null) {            return res;        }        Queue<TreeNode> queue = new LinkedList<>();        queue.add(pRoot);//先存入根结点,即从根结点开始遍历        while (!queue.isEmpty()) {            ArrayList<Integer> arrayList = new ArrayList<>();//用来存放每一层遍历到的结点            int n = queue.size();//记录 queue 的大小是为了分层            for (int i = 0; i < n; i++) {                TreeNode node = queue.poll();//将 queue 中所有的结点取出并删除                arrayList.add(node.val);//将 queue 中取出的结点放入 arrayList 中,arrayList中只存放了当前这层的所有结点,同时也将每一层分开输出                if (node.left != null) {//将下一层的结点又放入进 queue 中                    queue.add(node.left);                }                if (node.right != null) {                    queue.add(node.right);                }            }            res.add(arrayList);//将每一层遍历到的所有结点作为一个整体放入最后要输出的 res 中        }        return res;    }

原文地址:https://blog.51cto.com/14298563/2506723