我想创建一个由父母和孩子组成的类,以及一个递归方法来调用最后一个 child :
class MyClass:
def __init__(self,val,child =None):
self.val = val
self.child = child
def findLastChildVal(self):
if self.child ==None:
return self.val
return (...)
c = MyClass("I'm child")
p = MyClass("I'm parent",c)
p.findLastChildVal()
我不知道该写些什么,而不是(...)。令人困惑。
答案 0 :(得分:0)
这是一个经典的递归问题,我认为使用静态函数代替成员函数会容易得多:
class MyClass:
def __init__(self, val, child =None):
self.val = val
self.child = child
@staticmethod
def find_last_child_val(current_node: MyClass):
if current_node.child == None:
return current_node.val
else:
return MyClass.find_last_child_val(current_node.child)
c = MyClass("I'm child")
p = MyClass("I'm parent", c)
MyClass.find_last_child_val(p)
更新:
请注意,使用像这样的递归来搜索孩子并不有效。 find_last_child_val()
的复杂度为O(n)。在for循环中执行n次迭代而不是递归,效率更高。如果您想不出一种降低树遍历复杂性的方法,建议您使用其他数据结构。