536. 从字符串生成二叉树
问题:
你需要从一个包括括号和整数的字符串构建一棵二叉树。
输入的字符串代表一棵二叉树。它包括整数和随后的 0 ,1 或 2 对括号。整数代表根的值,一对括号内表示同样结构的子树。
若存在左子结点,则从左子结点开始构建。
示例:
提示:
- 输入字符串中只包含 ‘(’, ‘)’, ‘-’ 和 ‘0’ ~ ‘9’
- 空树由 “” 而非"()"表示。
解决:
遇到第一个"(“括号, 代表有左子树,遇到第二个”("括号代表有右子树。
注释挺详细的,具体可以看代码。
python代码:
class Solution:
def str2tree(self, s: str) -> TreeNode:
i = 0
def build():
nonlocal i
if i == len(s):
return
val = ''
# 提取数字
while i < len(s) and (s[i].isdigit() or s[i] == '-'):
val += s[i]
i += 1
# 建立根节点
root = TreeNode(val)
# 如果有左子树
if i < len(s) and s[i] == '(':
# 跳过左括号
i += 1
root.left = build()
# 跳过右括号
i += 1
# 如果有右子树
if i < len(s) and s[i] == '(':
# 跳过左括号
i += 1
root.right = build()
# 跳过右括号
i += 1
return root
return build()