依次输入表(30,15,28,20,24,10,12,68,35,50,46,55)中的元素,生成一棵二叉排序树,要 1、试画出生成之后的二叉排序树。 2、对该二叉排序数作中根遍历,写出遍历序列。 3、编程构建一个二叉排序树,并中根遍历验证上述结果。
时间: 2023-08-28 13:03:30 浏览: 245
1. 生成的二叉排序树如下图所示:
```
30
/ \
15 35
/ \ \
10 20 50
/ \ / \
24 28 46 55
/ \
12 68
```
2. 中根遍历序列为:`10 12 15 20 24 28 30 35 46 50 55 68`
3. 以下是 Python 代码实现:
```python
class TreeNode:
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 = 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_traversal(self, node, res):
if not node:
return
self.inorder_traversal(node.left, res)
res.append(node.val)
self.inorder_traversal(node.right, res)
bst = BST()
vals = [30, 15, 28, 20, 24, 10, 12, 68, 35, 50, 46, 55]
for val in vals:
bst.insert(val)
res = []
bst.inorder_traversal(bst.root, res)
print(res) # [10, 12, 15, 20, 24, 28, 30, 35, 46, 50, 55, 68]
```
阅读全文