Re: [閒聊] 每日LeetCode
看板Marginalman作者Neuenmuller (蘇菲・諾伊恩謬拉)時間2年前 (2023/12/08 10:10)推噓1(1推 0噓 1→)留言2則, 1人參與討論串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
12/08 10:37, 2F
討論串 (同標題文章)
完整討論串 (本文為第 569 之 719 篇):