[CF1439C] Greedy Shopping - 貪心,線段樹,二分
阿新 • • 發佈:2020-12-01
題目:從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。
解法:廣度優先搜尋
思路:使用佇列,佇列存放的是當前某一層的所有節點,所以出隊時同時把節點加入到list中,那麼這個list存放的將是某一層的所有節點
程式碼:
/**
- Definition for a binary tree node.
- public class TreeNode {
-
int val;
-
TreeNode left;
-
TreeNode right;
-
TreeNode(int x) { val = x; }
- }
*/
class Solution {
public List<List> levelOrder(TreeNode root) {
if(root==null){
return new ArrayList();
}
List<List> res = new ArrayList();
Queuequeue = new LinkedList(); //佇列
queue.offer(root); //根結點入隊
while(!queue.isEmpty()){
Listlist = new ArrayList();
for(int i=queue.size();i>0;i--){ //注意不能0到size-1,因為size會改變
TreeNode t = queue.poll();
list.add(t.val);
if(t.left!=null){
queue.offer(t.left);
}
if(t.right!=null){
queue.offer(t.right);
}
}
res.add(list);
}
return res;
}
}
注意:佇列判空和list判空都不能使用xxx != null,而應使用isEmpty,isEmpty是判斷內容是否為空