关注我,分享高质量每日一题题解~
b站同名账号分享力扣杯历届真题视频题解,也欢迎大家提出宝贵意见!
思路:深搜
- 我们发现中缀表达式便是树的中序遍历,但是本题需要为每一个二元表达式加一个括号,所以当我们遇到叶结点时,不应加括号,而应该直接返回该结点对应的字符串。对于非叶节点,我们在中序遍历之前加上两边的括号即可。
- 本题给定的二叉树结构中,$value$ 字段直接便是 $string$ 类型,所以可以很方便的加入到答案中,而不需要再做类型转换。
代码(C++)
class Solution {
public:
string dfs(TreeNode* root) {
if(!root) return "";
if(!root->left && !root->right) {
return root->val;
}
string ret = "";
ret += '(';
ret += dfs(root->left);
ret += root->val;
ret += dfs(root->right);
ret += ')';
return ret;
}
string expressionTree(TreeNode* root) {
return dfs(root->left) + root->val + dfs(root->right);
}
};