题目:
给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中返回。
例如:
给定的二叉树是{1,2,3,#,#,4,5}
该二叉树多行打印层序遍历的结果是
[
[1],
[2,3],
[4,5]
]
示例:
输入:{1,2,3,#,#,4,5}
返回值:[[1],[2,3],[4,5]]
思路:
简单的层序,没啥可说的
复杂度:
时间复杂度:遍历O(n)
空间复杂度:递归最差是O(n),一般为树高
代码:
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
if(pRoot!=null) queue.add(pRoot);
while(!queue.isEmpty()){
int len = queue.size();
ArrayList<Integer> cur = new ArrayList<>();
for(int i=0;i<len;++i){
TreeNode node = queue.poll();
cur.add(node.val);
if(node.left!=null) queue.add(node.left);
if(node.right!=null) queue.add(node.right);
}
res.add(cur);
}
return res;
}