Function 递归函数:保留原始参数
我已经为treap实现了排序功能:Function 递归函数:保留原始参数,function,python-2.7,recursion,binary-tree,Function,Python 2.7,Recursion,Binary Tree,我已经为treap实现了排序功能: def treesort(node, root): if node is None: return # Left child has higher priority if node.left != None and node.left.priority > node.priority: node = treerotateright(node) treesort(root, root
def treesort(node, root):
if node is None:
return
# Left child has higher priority
if node.left != None and node.left.priority > node.priority:
node = treerotateright(node)
treesort(root, root)
# Right child has higher priority
if node.right != None and node.right.priority > node.priority:
node = treerotateleft(node)
treesort(root, root)
treesort(node.left, root)
treesort(node.right, root)
基本上,你通过你的treap递归导航,如果其中一个孩子有更高的
优先级将较高的优先级向上旋转。插入新节点后将调用treesort()。因此,只有一个节点未排序,只要treap未排序,它就应该旋转。
我的想法是,如果检测到未排序的节点,则添加另一个“递归层”,而不是重复调用treesort()直到对treap进行排序。
我希望使用调用treesort()的原始节点==根来调用它
我的问题是,除了添加另一个刚刚解析过的参数外,我不知道还有什么其他方法可以保存根
原始预期用途:treesort(根目录)
现在:treesort(根,根)
我知道我可以编写另一个函数来调用这个函数,它只有一个参数。我只是好奇是否还有其他更优雅的方式,比如(它不起作用):
通常,您会使用某种sentinel默认值,通常为
None
:
def treesort(node, root=None):
if root is None:
root = node
...
重载函数怎么样?有一个版本只接受第一个参数并使用该参数调用第二个版本两次吗?
def treesort(node, root=None):
if root is None:
root = node
...