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)