Re: [閒聊] 每日LeetCode

看板Marginalman作者 (蘇菲・諾伊恩謬拉)時間2年前 (2023/12/08 10:10), 編輯推噓1(101)
留言2則, 1人參與, 2年前最新討論串569/719 (看更多)
https://leetcode.com/problems/construct-string-from-binary-tree/ 題目: 給你一個二元樹,叫你按照他的規則去輸出字串 舉例: root(left)(right) 如果沒有右邊子樹的話可以省略右邊 root(left) 但如果沒有左邊只有右邊子樹的話則不能省略 root()(right) 解法: 也沒啥特別的,就做DFS只是要顧慮左右有沒有子樹的問題。 Code: 老實說我覺得我這題寫的有夠爛。 但是基本上就是每個遞迴都確認左右兩邊的substree是哪種情況然後對應去做。 另外就是root不會有括號包住所以直接先做。 class Solution { public: void runner(TreeNode* root, string& output) { if (!root->left && !root->right) return; // left if (!root->left) output.append("()"); else { output.push_back('('); output.append(to_string(root->left->val)); runner(root->left, output); output.push_back(')'); } // right if (root->right) { output.push_back('('); output.append(to_string(root->right->val)); runner(root->right, output); output.push_back(')'); } } string tree2str(TreeNode* root) { string output; if (root) { output.append(to_string(root->val)); } runner(root, output); return output; } }; -- 你跟我說這個,我有神摸辦法? https://i.imgur.com/yeHmvwM.png
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 97.99.29.95 (美國) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1702001420.A.4AB.html

12/08 10:35, 2年前 , 1F
大師
12/08 10:35, 1F

12/08 10:37, 2年前 , 2F
直接呼叫tree2str就可以不用再開一個function
12/08 10:37, 2F
文章代碼(AID): #1bSdiCIh (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1bSdiCIh (Marginalman)