在Python中向二进制搜索树插入值
我正在复习我的最后一道练习题,其中一道练习题要求实现一个函数,将值放入Python中的二进制搜索树中。下面是我正在使用的树实现在Python中向二进制搜索树插入值,python,binary-search-tree,Python,Binary Search Tree,我正在复习我的最后一道练习题,其中一道练习题要求实现一个函数,将值放入Python中的二进制搜索树中。下面是我正在使用的树实现 class Tree(object): def __init__(self, entry, left=None, right=None): self.entry = entry self.left = left self.right = right 这是我需要填写的函数 def insert(item, tree
class Tree(object):
def __init__(self, entry, left=None, right=None):
self.entry = entry
self.left = left
self.right = right
这是我需要填写的函数
def insert(item, tree):
"""
>>> t = Tree(5, Tree(1, None, Tree(4)), Tree(7, Tree(6), Tree(8)))
>>> insert(2, t)
>>> t
Tree(5, Tree(1, None, Tree(4, Tree(2), None)), Tree(7, Tree(6), Tree(8)))
"""
谁能帮我实现这个代码,因为我不知道从哪里开始?谢谢 def插入(项目,树):
def insert(item, tree):
if (item < tree.entry):
if (tree.left != None):
insert(item, tree.left)
else:
tree.left = Tree(item)
else:
if (tree.right != None):
insert(item, tree.right)
else:
tree.right = Tree(item)
如果(项目
树是一种非线性数据结构。树由一组顶点和一组边创建。平均搜索复杂度为logn。让我们考虑如何将值插入到树中。
首先,你要创建一个顶点。换句话说,你要创建节点。然后,那些被创建的节点以分层的方式插入。在创建节点类时,你可以在构造函数中初始化节点类的所有属性。实际上就像这样
class Node:
def __init__(self,data):
self.data=data
self.left=None
self.right=None
开始时,节点的数据=数据,节点的左子节点为无,节点的右子节点为无。然后,您可以使用创建的节点创建二叉搜索树
class tree:
def __init__(self):
self.root=None
def insert(self,data):
if(self.root==None):
self.root=Node(data)
else:
self._insert(data,self.root)
def _insert(self, data, curNode):
if(curNode.data>data):
if(curNode.left==None):
curNode.left=Node(data)
else:
self._insert(data,curNode.left)
else:
if(curNode.right==None):
curNode.right=Node(data)
else:
self._insert(data,curNode.right)
首先,根节点是在树类的构造函数方法下初始化的。然后,使用insert函数插入节点。使用任何树遍历方法都可以打印树的元素。我想,您可以理解。谢谢 你想把值放在树的末尾吗?值应该像doctest一样放进去谢谢!这正是我想要的。我想我在树上搞糊涂了。左=树(项目)和树。右=树(项目)部分。我不完全理解如何插入它;然而,我知道如何通过它递归。