Re: [閒聊] 每日LeetCode

作者: Neuenmuller (蘇菲・諾伊恩謬拉)   2023-12-08 10:10:02
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;
}
};
作者: wwndbk (黑人問號)   2023-12-08 10:35:00
大師直接呼叫tree2str就可以不用再開一個function

Links booklink

Contact Us: admin [ a t ] ucptt.com