你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。

空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

示例 1:

输入:

二叉树: [1,2,3,4]

1

/ \

2      3

/

4

输出: "1(2(4))(3)"

解释: 原本将是“1(2(4)())(3())”, 在你省略所有不必要的空括号对之后, 它将是“1(2(4))(3)”。

示例 2:

输入:

二叉树: [1,2,3,null,4]

1

/  \

2      3

\ 4

输出: "1(2()(4))(3)" 解释: 和第一个示例相似, 除了我们不能省略第一个对括号来中断输入和输出之间的一对一映射关系。

struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
}; class Solution {
public:
string res = "";
string tree2str(TreeNode* t) {
if (t == NULL)
return res;
GetAns(t);
return res;
} void GetAns(TreeNode* root)
{
if(root != NULL)
res += to_string(root->val);
if (root != NULL && (root->right != NULL || root->left != NULL))
{
res += '(';
GetAns(root->left);
res += ')';
}
if (root != NULL && root->right != NULL)
{
res += '(';
GetAns(root->right);
res += ')';
}
}
};

最新文章

  1. Shader实例:NGUI图集中的UISprite正确使用Shader的方法
  2. Linq学习笔记(转)
  3. SGU 106 The equation
  4. 浅析WINFORM工具条的重用实现
  5. 背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)
  6. AngularJs项目
  7. c#常用工具类:文件和二进制转换
  8. Troubleshooting:lvm调整分区时“Error parsing metadata for VG fedora”的解决
  9. MAC上更攺jenkins默认安装目录
  10. Java调用IDL出错处理
  11. 钉钉 机器人接入 自定义webhook
  12. 框架应用 : Spring开发详述
  13. python小程序打包
  14. caffemodel模型
  15. js call() 笔记
  16. Java窗体简单登入案例(附带源码)
  17. sock5客户端解密数据流
  18. Beanutils工具常用方法
  19. 关于向后台请求数据(get请求,无参数传递),返回html代码(实际需要返回的是json数据)的解决方案
  20. windows版本 rac 报错信息

热门文章

  1. kubeadm安装Kubernetes 1.15 实践
  2. Logback 日志组件的使用
  3. codeforces 1186E- Vus the Cossack and a Field
  4. python 之 字符串处理
  5. python 中的 is 方法 总结
  6. java实现从实体到SQL语句的转换
  7. Python学习之--python概要
  8. 最小费用最大流——EK+SPFA
  9. Python实现单神经元分类图片的训练
  10. 常用 docker 容器 使用