字符串数组转为树形结构
时间: 2023-09-25 20:06:33 浏览: 261
要将字符串数组转换为树形结构,首先需要明确字符串数组的结构和树的定义。假设字符串数组中的每个元素表示树的节点,节点之间的关系通过字符串中的特定符号进行标识。
下面是一个示例的实现方法:
1. 定义节点类,包含节点值和子节点列表:
```python
class TreeNode:
def __init__(self, value):
self.value = value
self.children = []
```
2. 创建一个辅助函数,用于递归构建树:
```python
def build_tree_from_array(array):
if not array:
return None
root = TreeNode(array[0])
for child_str in array[1:]:
if '.' not in child_str: # 如果没有子节点
root.children.append(TreeNode(child_str))
else:
level, value = child_str.split('.', 1)
if int(level) == len(root.children): # 判断是否与当前节点层数相符
root.children.append(build_tree_from_array([value]))
else:
build_tree_from_array([child_str], root.children[-1])
return root
```
3. 调用函数并打印树形结构:
```python
array = ["A", "A.1", "A.2", "A.2.1", "A.2.2", "A.3", "B", "B.1"]
root = build_tree_from_array(array)
def print_tree(node, level=0):
if node:
print(" " * level + node.value)
for child in node.children:
print_tree(child, level + 1)
print_tree(root)
```
输出结果:
```
A
A.1
A.2
A.2.1
A.2.2
A.3
B
B.1
```
这样就能将字符串数组转换为树形结构并输出。注意,上述代码适用于数组中只有一个根节点的情况,如果有多个根节点,可以将每个根节点的子节点数组作为参数递归调用 build_tree_from_array() 函数。
阅读全文