Re: [閒聊] 每日LeetCode已回收

看板Marginalman作者 (みけねこ的鼻屎)時間2年前 (2023/02/19 13:07), 編輯推噓2(200)
留言2則, 2人參與, 2年前最新討論串238/719 (看更多)
103. Binary Tree Zigzag Level Order Traversal 給你一個樹,找出Z字型走訪的列表。 Example: https://assets.leetcode.com/uploads/2021/02/19/tree1.jpg
Input: root = [3,9,20,null,null,15,7] Output: [[3],[20,9],[15,7]] 思路1: 1.BFS走訪並把偶數層數的列表反轉順序。 Java Code: ----------------------------------------- class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { if (root == null) { return new ArrayList<>(); } List<List<Integer>> res = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); boolean flag = false; while (queue.size() > 0) { List<Integer> rows = new ArrayList<>(); int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode p = queue.poll(); rows.add(p.val); if (p.left != null) queue.offer(p.left); if (p.right != null) queue.offer(p.right); } if (flag) { Collections.reverse(rows); } flag = !flag; res.add(rows); } return res; } } ----------------------------------------- 思路2: 1.DFS走訪,依照當前層數來決定當前的列表要從左插入還是從右插入。 Java Code: ----------------------------------------- class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { if (root == null) { return new ArrayList<>(); } List<List<Integer>> res = new ArrayList<>(); dfs(root, res, 0); return res; } public void dfs(TreeNode root, List<List<Integer>> res, int level) { if (root == null) return; if (res.size() == level) { res.add(new ArrayList<>()); } if (level % 2 == 0) { res.get(level).add(root.val); } else { res.get(level).add(0, root.val); } dfs(root.left, res, level + 1); dfs(root.right, res, level + 1); } } ----------------------------------------- -- https://i.imgur.com/sjdGOE3.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.75.86 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1676783268.A.5D0.html

02/19 13:12, 2年前 , 1F
大師
02/19 13:12, 1F

02/19 13:30, 2年前 , 2F
原來你已經發了 大師
02/19 13:30, 2F
文章代碼(AID): #1ZyQwaNG (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ZyQwaNG (Marginalman)