這裡空置了兩個禮拜多,總之我要延畢了,怎麼說呢,大家都說延畢不是世界末日,我現在也接受這個說法了,不過還是希望自己這個小廢物,能快點出社會哈哈。
他說要反轉一個二元樹,我看起來像是本來Preorder這棵樹,數值會由小到大,那我要的答案是:Preorder會變成由大到小。
要回傳的是樹的root。
乍一看,我想說感覺是可以同時分別去拜訪左child跟右child,但想想感覺又好亂,繼續盯著樹看,感覺可以試試把每個點的link to child 都交換,直到沒有child為止。
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
exchange(root);
return root;
}
private:
void exchange(TreeNode* curr_node) {
if (curr_node == NULL)
return;
TreeNode* temp = curr_node->left;
curr_node->left = curr_node->right;
curr_node->right = temp;
exchange(curr_node->left);
exchange(curr_node->right);
}
};
開心,可能因為刷多了圖論的題目,第二直覺的解法一次就通過了!(雖然這題是簡單的)
參考:
https://ithelp.ithome.com.tw/articles/10278114