将n 个互不相同的正整数先后插入到一棵空的二叉查找树中,求最后生成的二叉查找树的先序序列
时间: 2024-05-03 21:19:18 浏览: 102
【剑指Offer】23.二叉搜索树的后序遍历序列(Python实现)
二叉查找树的先序遍历的顺序是根节点,左子树,右子树。因此,我们可以按照以下步骤构建二叉查找树并输出先序遍历序列:
1. 将第一个数作为根节点插入二叉查找树中。
2. 依次将后面的数插入二叉查找树中,每次插入后都输出根节点的值。
3. 插入完成后,对二叉查找树进行先序遍历,输出先序遍历序列。
代码实现:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def insert(root, val):
if not root:
return TreeNode(val)
if val < root.val:
root.left = insert(root.left, val)
else:
root.right = insert(root.right, val)
return root
def preorder(root, res):
if not root:
return
res.append(root.val)
preorder(root.left, res)
preorder(root.right, res)
def bst_preorder(nums):
if not nums:
return []
root = TreeNode(nums[0])
res = [root.val]
for num in nums[1:]:
root = insert(root, num)
res.append(root.val)
preorder(root, res)
return res
```
测试样例:
```python
assert bst_preorder([5, 2, 8, 1, 3, 6, 9]) == [5, 2, 1, 3, 8, 6, 9]
```
阅读全文