📅  最后修改于: 2023-12-03 15:28:44.412000             🧑  作者: Mango
这道问题涉及到对二叉搜索树进行插入操作。给出的代码示例中仅实现了二叉树的搜索功能,需要我们在此基础上实现插入功能。
二叉搜索树是一种有序树,对于每个节点,左子树上的所有节点的值都小于该节点的值,而右子树上的所有节点的值都大于该节点的值。因此,二叉搜索树的插入操作应该根据节点值的大小决定往左还是往右走。
具体实现上,我们可以先遍历二叉搜索树找到要插入的位置,然后新建一个节点并将其插入到相应位置。
以下是二叉搜索树插入操作的代码实现:
def insert(root, key):
if root is None:
return Node(key)
if key < root.data:
root.left = insert(root.left, key)
elif key > root.data:
root.right = insert(root.right, key)
return root
其中,root
代表二叉搜索树的根节点,key
代表要插入的节点的值。如果 root
为空,直接返回一个新节点;否则,比较 key
和 root
的值,若 key
比 root.data
小,则往左子树递归插入;否则,往右子树插入。
以下是本题的测试样例:
root = Node(50)
insert(root, 30)
insert(root, 20)
insert(root, 40)
insert(root, 70)
insert(root, 60)
insert(root, 80)
inorder(root)
运行结果是:
20 30 40 50 60 70 80
二叉搜索树是一种常用的数据结构,具有快速插入、删除和查找的特点。插入操作是其中的一个重要部分,在实现时需要注意保持树的有序性。