use*_*352 5 python insert binary-search-tree
所以我正在实现一个二进制搜索树,但是我是否应该只有Node class一个Bst class或者只有一个类感到困惑.
原因是因为我知道BST是由节点组成的,但在任何时候你都可以获取一个节点及其下面的所有节点,而且本质上也是一个BST.
如果我有以下代码,那么我在插入时可以调用我的代码 self.left.insert(data)
class Bst():
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def insert(self, data):
node_to_insert = Bst(data)
if data < self.data:
if self.left is None:
self.left = Bst(data)
else:
self.left.insert(data)
else:
if self.right is None:
self.right = Bst(data)
else:
self.right.insert(data)
Run Code Online (Sandbox Code Playgroud)
如果我这样做,那么他们是两个单独的东西a Node和BST然后在我的插入方法我有self.insert(data, node.left):
class Node():
def __init__(self, data):
self.data = data
self.left = None
self.right = None
class Bst():
def __init__(self, root=None):
self.root = root
def insert(self, data, node):
node_to_insert = Node(data)
if node is None:
node = node_to_insert
else:
if data < node.data:
if node.left is None:
node.left = node_to_insert
else:
self.insert(data, node.left)
else:
if node.right is None:
node.right = node_to_insert
else:
self.insert(data, node.right)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是哪个更好的代码self.insert(data, node.left)或self.left.insert(data).
我假设self.left.insert(data)当用户插入时,他们只需要写bst.insert(5)他们说的另一个bst.insert(bst.root, 5)