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