【Java】【力扣】102.二叉树层序遍历
思路
一个辅助队列(初始化队列:根节点入队)
一个节点 出队,他的左右孩子入队
循环 直到队列为空
举例
代码
public List<List<Integer>> levelOrder(TreeNode root) {if (root==null){return new ArrayList<List<Integer>>();}Queue<TreeNode> queue = new LinkedList<>();//结果数据List<List<Integer>> resultList=new ArrayList<>();//初始化 入队queue.offer(root);//层循环while (!queue.isEmpty()) {//创建level层listList<Integer> level=new ArrayList<>();int curSize=queue.size();//队列当层循环for (int i = 0; i < curSize; i++) {//出队,并得到节点TreeNode node =queue.poll();//如果左孩子不为空,入队if (node.left!= null) {queue.offer(node.left);}//如果右孩子不为空,入队if (node.right != null) {queue.offer(node.right);}//level.add(得到的节点)level.add(node.val);}//result,添加层节点resultList.add(level);}return resultList;}
总结
1. ”if else“和 ” if if“对比
图todo
2.循环变量 .length/.size ,要注意”是否会被改变“
3.习惯性 判空(方法开头)
1-对于传进来的参数,如果为空
其他 todo待补充