思路
一個輔助隊列(初始化隊列:根節點入隊)
一個節點 出隊,他的左右孩子入隊
循環 直到隊列為空
舉例
代碼
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待補充