把二叉树打印成多行

    技术2022-07-15  77

    1.题目

    2.解法(队列)

    import java.util.ArrayList; import java.util.ArrayDeque; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> arr = new ArrayList<>(); if(pRoot == null) return arr; // 声明一个队列 ArrayDeque<TreeNode> d1 = new ArrayDeque<>(); // 加头结点 d1.offer(pRoot); // 记录每层结点的个数 int count = 0; ArrayList<Integer> tmpArr = null; TreeNode node = null; while(!d1.isEmpty()){ count = d1.size(); tmpArr = new ArrayList<>(); // 利用for将该层结点全部移除 for(int i = 0; i < count; i++){ node = d1.poll(); tmpArr.add(node.val); if(node.left != null){ d1.offer(node.left); } if(node.right != null){ d1.offer(node.right); } } arr.add(tmpArr); } return arr; } }

    时间复杂度和空间复杂度均为O(n)

    Processed: 0.009, SQL: 9