Easy 226. Invert Binary Tree
In this blog I will share a solution to the Invert Binary Tree problem.
題目連結
難度:Easy
給定一個二元樹的根節點,將整棵樹左右翻轉。Example 1:Example 2:
限制
- 樹中節點數在範圍 0, 100 內
- -100 <= Node.val <= 100
Binary Tree
Recursion
解題思路
這題可以用遞迴的方式來解決,步驟如下:
- 基本概念
- 遞迴過程
複雜度分析
- 時間複雜度:O(n),需要遍歷每個節點一次
- 空間複雜度:O(h),h 是樹的高度,遞迴調用棧的空間
程式碼
程式碼說明
- 邊界處理
- 簡潔的條件判斷
if (!root)
- 簡潔的條件判斷
- 現代 JavaScript 特性
- 使用解構賦值一次完成交換
- 這樣就可以避免使用變數去維護左右子樹
- 遞迴處理
- 同時處理左右子樹
- 返回處理完的節點
解題心得
- 遞迴思維
- 把大問題分解成相同的小問題
- 找到適當的終止條件很重要
- 程式碼優化
- 解構賦值讓交換操作更好懂
::