文章目录

  • 1. 题目
  • 2. 解题

1. 题目

你需要从一个包括括号和整数的字符串构建一棵二叉树。

输入的字符串代表一棵二叉树。
它包括整数和随后的0,1或2对括号。
整数代表根的值,一对括号内表示同样结构的子树。

若存在左子结点,则从左子结点开始构建。(题目意思:先有左节点)

示例:
输入: "4(2(3)(1))(6(5))"
输出: 返回代表下列二叉树的根节点:4/   \2     6/ \   / 3   1 5   注意:
输入字符串中只包含 '(', ')', '-' 和 '0' ~ '9'
空树由 "" 而非"()"表示。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/construct-binary-tree-from-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {int i = 0;
public:TreeNode* str2tree(string s) {if(s == "") return NULL;return buildTree(s);}TreeNode* buildTree(string &s){if(i == s.size())return NULL;int val = 0, neg = 1;if(s[i] == '-'){neg = -1;//负数i++;}while(isdigit(s[i]))val = val*10 + neg*(s[i++]-'0');//计算值TreeNode* root = new TreeNode(val);if(i < s.size() && s[i] == '(' && !root->left){i++;root->left = buildTree(s);}if(i < s.size() && s[i] == '(' && !root->right){i++;root->right = buildTree(s);}i++;// 跳过 )return root;}
};

60 ms 26.4 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 536. 从字符串生成二叉树(递归)相关推荐

  1. C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序、中序、后序输出二叉树。

    C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序.中序.后序输出二叉树. Description 根据给定的字符串生成二叉树并前序.中序.后序此二叉树. Input 给定一字符串,其中#表示 ...

  2. [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]

    [问题描述][简单] [解答思路] 1. 递归 终止条件/基本情况 root ==null 递推关系 max(l,r)+1 时间复杂度:O(N) 空间复杂度:O(height) class Solut ...

  3. LeetCode实战:字符串相乘

    题目英文 Given two non-negative integers num1 and num2 represented as strings, return the product of num ...

  4. LeetCode实战:字符串相加

    题目英文 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and ...

  5. LeetCode—笔记—51、N皇后——递归回溯,个人思路,简单易懂

    LeetCode-笔记-51.N皇后--递归回溯,个人思路,简单易懂 51. N 皇后 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 ...

  6. 中缀表达式生成二叉树

    中缀表达式生成二叉树,大概应该有递规,迭代,和编译原理中的自顶向下的预测分析法等. 递规,迭代的思路每次读出一个数字,一个运算符,比较当前运算符和之前符号的优先级,进行相关的操作. 自顶向下的预测分析 ...

  7. java 广义表_java 输入广义表 生成二叉树 | 学步园

    今天我要分享我学习用广义表生成二叉树的代码 这里我参考了  张二青博主的一些知识 http://my.csdn.net/zhangerqing 下面我进行分析了  比如输入广义表  (有关字符串的定义 ...

  8. c语言编程实现二叉树的镜像,C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像)...

    本文主要向大家介绍了C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助. #include #include ...

  9. 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

    LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...

最新文章

  1. 解决Python自带的json序列化工具不能序列化datetime类型数据问题
  2. 力扣: 268. 丢失的数字
  3. 【软件测试】软件测试札记
  4. 视图单行子查询返回mysql,Oracle命令整理 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 关于as400的基于关键字编译大揭秘
  6. JavaWeb——mybatis一对一、一对多查询
  7. python程序-Python程序执行原理,python程序怎么运行的?
  8. linux下安装redis-cli
  9. 【BZOJ 1026】 [SCOI2009]windy数
  10. 02-body标签中相关标签
  11. 推荐:3个Python好用的PDF库
  12. python里sample_python中的sample什么意思
  13. cad隐藏图层命令快捷键_Auto CAD如何快速隐藏图层,快捷键是什么?
  14. 蓝桥杯的c语言编译器,第九届蓝桥杯大赛个人赛省赛(软件类)C/C++ 大学B组比赛心得(还在更新)...
  15. js删除数组中的指定对象
  16. Android so导入表,Android so注入(inject)和Hook技术学习(二)——Got表hook之导入表hook...
  17. 深度分析:服务器租用与服务器托管的区别-蓝队云
  18. React.js读书与总结:《react-tutorial》
  19. win10 uwp 使用 AppCenter 自动构建
  20. ZWAVE ALARM CLASS -- 过时的sensor告警和事件上报机制

热门文章

  1. Python是非常优美的语言,那到底如何个美呢?
  2. unity2d随机生成物体_2020 年最好用的一键生成设计神器,全在这里了!
  3. php环境编译成品,PHPweb成品网站安装环境要求和安装方法
  4. c++远征之模板篇——静态数据成员,静态成员函数
  5. 网络4 交换机终端命令
  6. centOS 6 和centOS 7 防火墙指令
  7. oracle 12.2.0.1 搭建 active dataguard
  8. Kettle 学习导航帖整理
  9. 高版本号chrome安装flashplayer debuger后无法使用的问题
  10. jquery深入学习