请帮我生成二叉树的代码
时间: 2023-11-25 07:05:02 浏览: 25
以下是一个Python实现的二叉树代码,包括创建二叉树、遍历二叉树等基本操作:
```python
class Node:
def __init__(self, val=None):
self.val = val
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def create_tree(self, vals):
"""
创建二叉树
:param vals: 列表,二叉树节点的值
:return:
"""
nodes = []
for val in vals:
node = Node(val)
nodes.append(node)
self.root = nodes[0]
for i in range(len(vals) // 2):
nodes[i].left = nodes[i * 2 + 1]
if i * 2 + 2 < len(vals):
nodes[i].right = nodes[i * 2 + 2]
def pre_order(self, node):
"""
前序遍历
:param node: 当前节点
:return:
"""
if node is not None:
print(node.val, end=' ')
self.pre_order(node.left)
self.pre_order(node.right)
def in_order(self, node):
"""
中序遍历
:param node: 当前节点
:return:
"""
if node is not None:
self.in_order(node.left)
print(node.val, end=' ')
self.in_order(node.right)
def post_order(self, node):
"""
后序遍历
:param node: 当前节点
:return:
"""
if node is not None:
self.post_order(node.left)
self.post_order(node.right)
print(node.val, end=' ')
```
使用方法:
```python
tree = BinaryTree()
tree.create_tree([1, 2, 3, 4, 5, 6, 7]) # 创建二叉树
tree.pre_order(tree.root) # 前序遍历
tree.in_order(tree.root) # 中序遍历
tree.post_order(tree.root) # 后序遍历
```