怎么使用Python建立一颗树结构
时间: 2023-06-25 22:04:11 浏览: 40
在Python中可以使用类来表示树结构,每个节点都是一个对象,包含一个值以及指向子节点的指针。
以下是一个简单的树节点类的示例代码:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
```
在这个示例中,树节点包含一个值 `val`,以及两个指针 `left` 和 `right`,分别指向左子节点和右子节点。
要建立一颗树结构,可以先创建根节点,然后不断添加子节点。以下是一个示例代码,该代码创建了一个如下图所示的树结构:
```
1
/ \
2 3
/ \
4 5
```
```python
# 创建根节点
root = TreeNode(1)
# 添加左子节点
root.left = TreeNode(2)
# 添加右子节点
root.right = TreeNode(3)
# 添加左子节点的左子节点
root.left.left = TreeNode(4)
# 添加左子节点的右子节点
root.left.right = TreeNode(5)
```
通过这种方式,就可以建立一颗树结构,并且可以通过遍历节点来访问树中的元素。
相关问题
python语言用孩子链存储结构建立树的代码
下面是用孩子链存储结构建立树的 Python 代码示例:
```python
class TreeNode:
def __init__(self, data):
self.data = data
self.children = []
def add_child(self, child):
self.children.append(child)
def print_tree(self):
print(self.data)
for child in self.children:
child.print_tree()
# 创建一棵树
root = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)
node4 = TreeNode(4)
node5 = TreeNode(5)
node6 = TreeNode(6)
node7 = TreeNode(7)
root.add_child(node2)
root.add_child(node3)
node2.add_child(node4)
node2.add_child(node5)
node3.add_child(node6)
node3.add_child(node7)
# 打印树
root.print_tree()
```
在上面的示例代码中,我们定义了一个 `TreeNode` 类,其中包含一个数据 `data` 和一个孩子列表 `children`。 `add_child` 方法用于将一个孩子节点添加到它的父节点中。它将孩子节点添加到父节点的孩子列表中。
最后,我们使用 `print_tree` 方法来递归打印整棵树。它首先打印当前节点的数据,然后遍历该节点的所有孩子节点,并递归调用 `print_tree` 方法来打印孩子节点的子树。
python中利用双亲存储结构建立树并打印的代码
下面是使用双亲存储结构建立树并打印的Python示例代码:
```python
class Node:
def __init__(self, data, parent=None):
self.data = data
self.parent = parent
self.children = []
def add_child(self, node):
node.parent = self
self.children.append(node)
def print_tree(self, level=0):
print(" " * level + "|--", self.data)
for child in self.children:
child.print_tree(level + 1)
# 示例
root = Node("A")
b = Node("B")
c = Node("C")
d = Node("D")
e = Node("E")
f = Node("F")
g = Node("G")
root.add_child(b)
root.add_child(c)
b.add_child(d)
b.add_child(e)
c.add_child(f)
c.add_child(g)
root.print_tree()
```
输出结果:
```
|-- A
|-- B
|-- D
|-- E
|-- C
|-- F
|-- G
```
此代码中,`Node`类表示树中的一个节点,它包含一个数据元素、指向父节点的指针和一个子节点列表。`add_child`方法用于在当前节点下添加一个子节点,并将该子节点的父节点指针指向当前节点。`print_tree`方法用于递归地打印整棵树,从根节点开始,先打印当前节点的数据元素,然后递归打印每个子节点。`level`参数用于指定当前节点所处的层数,以便在打印时缩进。