先序遍历字符串创建二叉树
时间: 2023-09-12 10:11:02 浏览: 96
先序遍历字符串创建二叉树的过程可以通过递归实现,具体步骤如下:
1. 如果字符串为空或者长度为0,则返回空节点。
2. 取出字符串的第一个字符作为当前节点的值。
3. 递归创建左子树,传入剩余字符串(除去第一个字符)。
4. 递归创建右子树,传入剩余字符串(除去第一个字符和左子树对应的字符串)。
5. 返回当前节点。
下面是一个示例代码:
```
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def buildTree(s: str) -> TreeNode:
if not s:
return None
# 取出第一个字符作为根节点的值
root_val = s[0]
root = TreeNode(int(root_val))
# 找到左右子树对应的字符串
left_str = ""
right_str = ""
i = 2 # 从第二个位置开始遍历
count = 1 # count 记录左右括号的数量
while count > 0:
if s[i] == "(":
count += 1
elif s[i] == ")":
count -= 1
left_str += s[i]
i += 1
right_str = s[i:]
# 递归创建左右子树
root.left = buildTree(left_str)
root.right = buildTree(right_str)
return root
```
示例:
输入:s = "1(2(4)(5))(3)"
输出:
```
1
/ \
2 3
/ \
4 5
```
注意:这种方式只适用于完全二叉树,对于其他类型的二叉树,建议使用其他遍历方式,如中序遍历、后序遍历等。
阅读全文