前言
仅记录学习笔记,如有错误欢迎指正。
题目
给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中返回。 例如: 给定的二叉树是{1,2,3,#,#,4,5}该二叉树多行打印层序遍历的结果是
[
[1],
[2,3],
[4,5]
]
示例
- 输入:{1,2,3,#,#,4,5}
- 输出: [[1],[2,3],[4,5]]
解法
学习递归的思路 为什么这样子递归呢import java.util.ArrayList;
/*
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>> res = new ArrayList<>();
ds(res,pRoot,1);
return res;
}
private void ds( ArrayList<ArrayList<Integer>> res,TreeNode pRoot,int depth){
if(pRoot == null){
return ;
}
//此时还没加入节点
if(depth > res.size()){
res.add(new ArrayList<Integer>());
}
//这一层的list加入节点
res.get(depth-1).add(pRoot.val);
ds(res,pRoot.left,depth+1);
ds(res,pRoot.right,depth+1);
}
}