把二叉树打印成多行

来源:互联网 发布:mac的iphone在哪 编辑:程序博客网 时间:2024/05/29 08:37

题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {        ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();        if (pRoot == null) {            return lists;        }        Deque<TreeNode> deque = new ArrayDeque<TreeNode>();        deque.push(pRoot);        while (!deque.isEmpty()) {            int low = 0;            int layerNum = deque.size();            ArrayList<Integer> list = new ArrayList<Integer>();            // 根据low、layerNum变量就可以知道每层的节点个数            while (low++ < layerNum) {                TreeNode temp = deque.pop();                list.add(temp.val);                if (temp.left != null) {                    deque.offer(temp.left); // 注意不是push()                }                if (temp.right != null) {                    deque.offer(temp.right);                }            }            lists.add(list);        }        return lists;    }
0 0
原创粉丝点击