Algorithm I 筆記撰寫計畫 第十天第一題,共三題。
- 難度:
Easy
- 花費時間: 10 min
- 題目: 144. Binary Tree Preorder Traversal
前續遍歷一個二元樹,然後把結果回傳。
點我開啟限制與範例
限制:
- The number of nodes in the tree is in the range
[0, 100]
. -100 <= Node.val <= 100
Example 1:
1 | Input: root = [1,null,2,3] |
Example 2:
1 | Input: root = [] |
Example 3:
1 | Input: root = [1] |
筆記
這題要練習樹的前序走訪,很簡單,就用深度優先走訪就完事了。
題目有要求要用迴圈的作法,所以遞迴跟迴圈各寫一個解答。
Recursive
1 | function preorderTraversal(root: TreeNode | null, vals: number[] = []): number[] { |
iterative
1 | function preorderTraversal(root: TreeNode | null): number[] { |
成績
Language | Runtime | Beats | Memory Usage | Beats |
---|---|---|---|---|
TS iterative | 83 ms | 75.94% | 44.8 MB | 28.95% |
TS recursive | 107 ms | 45.11% | 44.5 MB | 48.12% |
迴圈寫法很輕鬆地就得到了高分,側面驗證了遞迴的確會影響效率(最佳化的例外)。