想法:
遞迴順序是 先遞迴左右子樹 (post-order),再交換當前節點左右子節點
在每個節點做交換時,所用的 left 與 right 已經是「各自子樹被反轉過」的結果(這就是為什麼用後序正確)
程式碼:
class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
// 先翻轉左右子樹
TreeNode left = invertTree(root.left);
TreeNode right = invertTree(root.right);
// 再交換
root.left = right;
root.right = left;
return root;
}
}
—
兩者比較