我对python和算法非常陌生,我想在类内部而不是外部声明函数。以下是我现在拥有的:
通用树类NAryTree
实现:
class NAryTree:
def __init__(self, key):
self.key = key
self.children = []
def __str__(self):
return str(self.key)
def addChild(self, tree):
self.children.append(tree)
def getChild(self, k):
return self.children[k]
def getNChildren(self):
return len(self.children)
def __iter__(self):
return self.children.__iter__()
def __next__(self):
return self.children.__next__()
计算子树最小和的函数:
def minSubtree(tree):
value = tree.key
for child in tree:
value += min(minSubtree(child), 0)
return value
和构建树函数buildMyNAryTree()
:
def buildMyNAryTree():
root = NAryTree(1)
root.addChild(NAryTree(-2))
root.addChild(NAryTree(3))
root.addChild(NAryTree(4))
root.getChild(0).addChild(NAryTree(-5))
root.getChild(1).addChild(NAryTree(6))
root.getChild(1).addChild(NAryTree(7))
root.getChild(2).addChild(NAryTree(-8))
root.getChild(0).getChild(0).addChild(NAryTree(-9))
root.getChild(0).getChild(0).addChild(NAryTree(-10))
root.getChild(0).getChild(0).addChild(NAryTree(11))
root.getChild(1).getChild(0).addChild(NAryTree(-4))
root.getChild(1).getChild(1).addChild(NAryTree(12))
root.getChild(1).getChild(1).addChild(NAryTree(-13))
root.getChild(2).getChild(0).addChild(NAryTree(14))
return root
我想要的是在类中声明minSubtree(tree)
,但是我不知道如何更改参数。换句话说,我想用buildMyNAyTree().minSubtree()
而不是minSubtree(buildMyNAryTree())
返回子树的最小和。你知道吗
我想这应该是你想要的:
它遍历树的子级并调用子级的minSubTree命令。你知道吗
将函数缩进到类主体中,按照约定,将
tree
重命名为self
。访问child.minSubtree()
而不是minSubtree(child)
。你知道吗print(buildMyNAryTree().minSubtree())
产生-32
。你知道吗相关问题 更多 >
编程相关推荐