【发布时间】:2016-03-17 17:33:24
【问题描述】:
我正在二叉搜索树上尝试这个继任者和前任者。
只是想知道一旦我掌握了后继代码,我可以将其翻转并用于前任代码吗? 我已经对后继者进行了编码,并尝试将其用于前任。 但是,即使我尝试放置其他值,我的输出值也不会改变..
下面是我的代码:
成功
def succ(self, key):
temp = self.root
prev = None
if (temp.right is not None):
temp = temp.right
while (temp.left is not None):
temp = temp.left
prev = temp
elif temp.left is not None:e
temp = temp.left
while (temp.right is not None):
temp = temp.right
prev = temp
else:
return None
return prev.key
前任
def pred(self, key):
temp = self.root
prev = None
#if right is not none, succ lies in the right sub tree
if (temp.right is not None):
temp = temp.right
while (temp.left is not None):
#return the node with the minimum key value
temp = temp.left
prev = temp
#if left not none, succ lies in the right sub tree
elif temp.left is not None:
#go right till .right is None
#return the node with the maximum key value
temp = temp.left
while (temp.right is not None):
temp = temp.right
prev = temp
else:
#no succ
return None
return prev.key
树
def createTree(self):
#root
self.put("F",6)
#leftSubTree
self.put("D",4)
#leftLeftSubTree
self.put("C",3)
self.put("B",2)
self.put("A",1)
#LeftRightSubTree
self.put("E",5)
#RightSubTree
self.put("I",9)
#RightLeftSubTree
self.put("G",7)
self.put("H",8)
#RightRightSubTree
self.put("J",10)
【问题讨论】:
-
它们都是一样的。你还没有翻转任何东西。
-
你能提供一个最小的工作示例吗?因为这些是类的一部分。您可以提供类的各个部分(方法 put 和只是类名和简化的 init ...),以便可以尝试代码。
标签: python