LeetCode每日一题 606. 根据二叉树创建字符串
早上好各位,今天起的很早就打开了LeetCode,让我们开始吧。
题目
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
示例
示例1:
1 | 输入: 二叉树: [1,2,3,4] |
示例2:
1 | 输入: 二叉树: [1,2,3,null,4] |
题解
题目做多了后,一看就是递归。
我们把要输出的 string
提取出来写出公式:root->val(root->left)(root->right)
一目了然。
再将递归方法套进去
root->val(tree2str(root->left))(tree2str(root->right))
当然还有其他条件了。
- 当
root->right == nullptr
时我们要省略掉root->right
的括号,如下:root->val(tree2str(root->left))
- 当
root->right==nullptr && root->left==nullptr
时我们就只需要返回root->val
- 当
root == nullptr
时我们只需要返回空字符串 “”
这样我们才算真正地完成了对题目的解读,可以开始写代码了。
代码
1 | //执行 12 ms 超越 90.28% 消耗 25.5 MB 超越 49.86% |
简单!
PS
此解法非唯一解,且不一定是最好的解法,如果您有更好的解法,欢迎在评论区中提出。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joyer的博客!
评论