iT邦幫忙

2021 iThome 鐵人賽

0

這裡空置了兩個禮拜多,總之我要延畢了,怎麼說呢,大家都說延畢不是世界末日,我現在也接受這個說法了,不過還是希望自己這個小廢物,能快點出社會哈哈。

思路

他說要反轉一個二元樹,我看起來像是本來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


上一篇
Leetcode: 112. Path Sum
下一篇
Leetcode: 114. Flatten Binary Tree to Linked List | 含C++筆記
系列文
來解數學跟刷圖論跟幾何程式題或者我突然想研究的主題33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言