python二叉搜索树
时间: 2023-10-14 11:27:23 浏览: 89
Python实现二叉搜索树
5星 · 资源好评率100%
二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它满足以下条件:
1. 左子树上所有节点的值均小于它的根节点的值;
2. 右子树上所有节点的值均大于它的根节点的值;
3. 左右子树都是二叉搜索树。
下面是Python实现二叉搜索树的代码:
```python
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BST:
def __init__(self):
self.root = None
def insert(self, value):
node = Node(value)
if not self.root:
self.root = node
return
cur = self.root
while True:
if value < cur.value:
if cur.left is None:
cur.left = node
return
cur = cur.left
else:
if cur.right is None:
cur.right = node
return
cur = cur.right
def find(self, value):
if not self.root:
return False
cur = self.root
while cur:
if value == cur.value:
return True
elif value < cur.value:
cur = cur.left
else:
cur = cur.right
return False
def inorder(self, node):
if node:
self.inorder(node.left)
print(node.value)
self.inorder(node.right)
def preorder(self, node):
if node:
print(node.value)
self.preorder(node.left)
self.preorder(node.right)
def postorder(self, node):
if node:
self.postorder(node.left)
self.postorder(node.right)
print(node.value)
```
这里定义了一个节点类 Node 和一个二叉搜索树类 BST。节点类包含节点的值和左右子节点,二叉搜索树类包含根节点。实现了插入节点、查找节点、中序遍历、前序遍历和后序遍历等操作。其中,插入节点采用了循环实现,查找节点采用了循环实现,遍历节点采用了递归实现。
阅读全文