剑指Offer—60—把二叉树打印成多行

来源:互联网 发布:lastindexof的用法 js 编辑:程序博客网 时间:2024/05/21 15:39

把二叉树打印成多行:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

package A60把二叉树打印成多行;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class Solution {    // 内存溢出    ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {        ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();        if (pRoot == null) {            return lists;        }        ArrayList<Integer> list = new ArrayList<>();        Queue<TreeNode> queue = new LinkedList<>();        queue.add(null);        queue.add(pRoot);        while (!queue.isEmpty()) {            TreeNode treeNode = queue.poll();            if (treeNode == null) {                while (!queue.isEmpty()) {                    list.add(queue.poll().val);                }                lists.add(list);                list = new ArrayList<>();                queue.add(null);                continue;            }            if (treeNode.left != null) {                queue.add(treeNode.left);            }            if (treeNode.right != null) {                queue.add(treeNode.right);            }        }        return lists;    }}class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}
package A60把二叉树打印成多行;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class Solution1 {    ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {        ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();        if (pRoot == null) {            return lists;        }        ArrayList<Integer> list = new ArrayList<>();        Queue<TreeNode> queue = new LinkedList<>();        queue.add(pRoot);        int start = 0;        int end = 1;        while (!queue.isEmpty()) {            TreeNode treeNode = queue.poll();            list.add(treeNode.val);            start++;            if (treeNode.left != null){                queue.add(treeNode.left);            }            if (treeNode.right != null){                queue.add(treeNode.right);            }            if (start == end){                end = queue.size();                start = 0;                lists.add(list);                list = new ArrayList<>();                // list.clear() 报错.            }        }        return lists;    }}
原创粉丝点击