python中使用类的方法实现二叉树的基本操作
时间: 2023-06-12 08:07:21 浏览: 60
下面是使用类的方法实现二叉树的基本操作的示例代码:
```python
class TreeNode:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
class BinaryTree:
def __init__(self, root=None):
self.root = root
# 插入节点
def insert(self, val):
node = TreeNode(val)
if not self.root:
self.root = node
else:
queue = [self.root]
while queue:
cur = queue.pop(0)
if not cur.left:
cur.left = node
return
elif not cur.right:
cur.right = node
return
else:
queue.append(cur.left)
queue.append(cur.right)
# 删除节点
def delete(self, val):
if not self.root:
return
if self.root.val == val:
self.root = None
return
queue = [self.root]
while queue:
cur = queue.pop(0)
if cur.left:
if cur.left.val == val:
cur.left = None
return
else:
queue.append(cur.left)
if cur.right:
if cur.right.val == val:
cur.right = None
return
else:
queue.append(cur.right)
# 前序遍历
def preorder(self, node):
if not node:
return
print(node.val, end=' ')
self.preorder(node.left)
self.preorder(node.right)
# 中序遍历
def inorder(self, node):
if not node:
return
self.inorder(node.left)
print(node.val, end=' ')
self.inorder(node.right)
# 后序遍历
def postorder(self, node):
if not node:
return
self.postorder(node.left)
self.postorder(node.right)
print(node.val, end=' ')
```
使用示例:
```python
# 创建二叉树
tree = BinaryTree()
tree.insert(5)
tree.insert(3)
tree.insert(7)
tree.insert(2)
tree.insert(4)
tree.insert(6)
tree.insert(8)
# 前序遍历
print('前序遍历:', end=' ')
tree.preorder(tree.root)
print()
# 中序遍历
print('中序遍历:', end=' ')
tree.inorder(tree.root)
print()
# 后序遍历
print('后序遍历:', end=' ')
tree.postorder(tree.root)
print()
# 删除节点
tree.delete(4)
print('删除节点后的中序遍历:', end=' ')
tree.inorder(tree.root)
print()
```
输出结果:
```
前序遍历: 5 3 2 4 7 6 8
中序遍历: 2 3 4 5 6 7 8
后序遍历: 2 4 3 6 8 7 5
删除节点后的中序遍历: 2 3 5 6 7 8
```