任意给定一组数据,设计一个算法,建立一棵二叉排序树,对它进行查找、插入、删除等操作。生成代码
时间: 2024-02-22 19:55:35 浏览: 84
任给一组数,利用二叉树进行排序,查询,插入,删除操作。
好的,以下是建立二叉排序树的 Python 代码:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class BST:
def __init__(self):
self.root = None
def insert(self, val):
if not self.root:
self.root = Node(val)
else:
self._insert(self.root, val)
def _insert(self, node, val):
if val < node.val:
if not node.left:
node.left = Node(val)
else:
self._insert(node.left, val)
else:
if not node.right:
node.right = Node(val)
else:
self._insert(node.right, val)
def find(self, val):
return self._find(self.root, val)
def _find(self, node, val):
if not node:
return False
elif node.val == val:
return True
elif val < node.val:
return self._find(node.left, val)
else:
return self._find(node.right, val)
def delete(self, val):
self.root = self._delete(self.root, val)
def _delete(self, node, val):
if not node:
return None
elif val < node.val:
node.left = self._delete(node.left, val)
elif val > node.val:
node.right = self._delete(node.right, val)
else:
if not node.left:
return node.right
elif not node.right:
return node.left
else:
temp = self._find_min(node.right)
node.val = temp.val
node.right = self._delete(node.right, temp.val)
return node
def _find_min(self, node):
while node.left:
node = node.left
return node
```
以上是建立二叉排序树的 Python 代码,其中包括了插入、查找和删除等操作。如果您有任何问题,可以随时问我。
阅读全文