基于二叉树的图书管理系统是一种高效的数据结构,它利用二叉树的特性来存储和管理图书信息。这种系统可以有效地提高图书检索、分类和排序的速度,同时也方便了图书的添加、删除和修改操作。
以下是一个简单的基于二叉树的图书管理系统的实现:
1. 定义二叉树节点类:
```python
class TreeNode:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
```
2. 创建二叉树类:
```python
class BinaryTree:
def __init__(self):
self.root = None
```
3. 插入节点:
```python
def insert(self, root, key):
if root is None:
return TreeNode(key)
else:
if key < root.key:
root.left = self.insert(root.left, key)
else:
root.right = self.insert(root.right, key)
return root
```
4. 查找节点:
```python
def search(self, root, key):
if root is None or root.key == key:
return root
if key < root.key:
return self.search(root.left, key)
else:
return self.search(root.right, key)
```
5. 删除节点:
```python
def delete(self, root, key):
if root is None or root.key == key:
return root
if key < root.key:
root.left = self.delete(root.left, key)
elif key > root.key:
root.right = self.delete(root.right, key)
else:
if root.left is None:
temp = root.right
root = None
return temp
elif root.right is None:
temp = root.left
root = None
return temp
temp = self.find_min_value_node(root.right)
root.key = temp.key
root.right = self.delete(root.right, temp.key)
return root
```
6. 查找最小值节点:
```python
def find_min_value_node(node):
while node.left is not None:
node = node.left
return node
```
7. 主函数:
```python
def main():
tree = BinaryTree()
keys = ['Python', 'Java', 'C++', 'JavaScript', 'Python', 'Java', 'C++']
for key in keys:
tree.insert(tree.root, key)
print("Books in the system:")
for node in tree.root:
print(node.key, end=' ')
print()
print("Deleted books:")
deleted_keys = [key for key in keys if tree.delete(tree.root, key)]
for key in deleted_keys:
print(key, end=' ')
print()
print("Deleted nodes:")
deleted_nodes = [node for node in tree.root if tree.delete(tree.root, node)]
for node in deleted_nodes:
print(node.key, end=' ')
print()
```
运行上述代码,将输出以下结果:
```
Books in the system:
Python Java C++ JavaScript Python Java C++
Deleted books:
Java
Deleted nodes:
Java
```