层序从上到下打印二叉树
题目描述:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
题目思路:
- 如果根节点为空,那么返回一个空列表[]
- 如果不为空,把根节点加入到队列中
- 队列为空的时候跳出循环,否则进行下面的操作
- 创建一个列表
- 遍历队列里的元素,将其加入列表
- 判断当前加入元素有无左右节点,如果有就加入
题目代码:
class solution{
public List<List<Integer>> levelOrder(TreeNode root){
if(root == null) return new ArrayList<List<Integer>>;
//创建一个数组列表用来保存结果
List<list<Integer>> reslut = new ArrayList<>();
//一个队列用来保存当前一层的节点
Queue<TreeNode> queue = new LinkedList<>();
//将根节点加入到队列中
queue.add(root);
//当不为空的时候退出
while(! queue.isEmpty()){
//每一个列表里的数据就是一层的数据
List<Integer> list = new ArrayList<>();
//遍历队列
for(int i = 0;i< queue.size();i++){
//取出列表第一个节点
TreeNode node = queue.pop();
//将其值加入到list
list.add(node.val);
//判断有无左右节点
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
//将一层的列表添加到结果列表中
reslut.add(list);
}
//遍历结束的时候就是中序遍历结束
return reslut;
}
}