我应该如何删除此代码的重复数据(简化):
root = # some node in a binary tree
item = # some item that gets stored with a node
# The code that I want to deduplicate (insert into binary tree)
current_node = root
while current_node:
if current_node.mark > item:
if current_node.left:
current_node = current_node.left
else:
current_node.left = Node(item)
break
# the same thing but with current_node.right :(
elif current_node.mark < item:
if current_node.right:
current_node = current_node.right
else:
current_node.right = Node(item)
break
在C ++中,我会这样做:
auto& dir_node = current_node.mark > item ? current_node.left : current_node.right;
,然后在我正在使用dir_node
的地方使用current_node.left/right
。但是Python没有引用。如果我这样做:
dir_node = current_node.left if current_node.mark > item else current_node.right
它工作正常,但仅用于if部分。对于其他部分,它不起作用,因为据我所知,我正在重新绑定dir_node
,而实际上没有修改对象dir_node
的引用。那比我现在拥有的要好,但是仍然有些重复。
所以我的问题是:如何对这段代码进行重复数据删除?