用python构建二叉搜索树并遍历
时间: 2023-07-24 19:10:32 浏览: 85
好的,我可以为您演示用Python构建二叉搜索树并遍历的代码。以下是示例代码:
```python
class TreeNode:
def __init__(self, val=None):
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 = TreeNode(val)
return
curr = self.root
while curr:
if val < curr.val:
if not curr.left:
curr.left = TreeNode(val)
return
curr = curr.left
else:
if not curr.right:
curr.right = TreeNode(val)
return
curr = curr.right
def inorder(self, node):
if not node:
return
self.inorder(node.left)
print(node.val, end=' ')
self.inorder(node.right)
def preorder(self, node):
if not node:
return
print(node.val, end=' ')
self.preorder(node.left)
self.preorder(node.right)
def postorder(self, node):
if not node:
return
self.postorder(node.left)
self.postorder(node.right)
print(node.val, end=' ')
# 创建一个二叉搜索树并插入元素
bst = BST()
bst.insert(8)
bst.insert(3)
bst.insert(1)
bst.insert(6)
bst.insert(10)
bst.insert(14)
bst.insert(4)
bst.insert(7)
bst.insert(13)
# 中序遍历
print("Inorder Traversal:")
bst.inorder(bst.root)
print()
# 前序遍历
print("Preorder Traversal:")
bst.preorder(bst.root)
print()
# 后序遍历
print("Postorder Traversal:")
bst.postorder(bst.root)
print()
```
输出结果:
```
Inorder Traversal:
1 3 4 6 7 8 10 13 14
Preorder Traversal:
8 3 1 6 4 7 10 14 13
Postorder Traversal:
1 4 7 6 3 13 14 10 8
```
以上代码中,我们定义了一个 `TreeNode` 类和一个 `BST` 类,分别表示二叉搜索树中的节点和二叉搜索树本身。在 `BST` 类中,我们实现了三种遍历方法:中序遍历、前序遍历和后序遍历。我们还定义了一个 `insert` 方法,用于将元素插入到二叉搜索树中。
在测试代码中,我们创建了一个二叉搜索树并插入了一些元素,然后分别进行了中序遍历、前序遍历和后序遍历。
阅读全文