精華區beta Marginalman 關於我們 聯絡資訊
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
wwndbk: 大師 12/08 10:35
wwndbk: 直接呼叫tree2str就可以不用再開一個function 12/08 10:37