【发布时间】:2018-05-16 12:50:52
【问题描述】:
我正在尝试编写一个程序来计算由列表列表表示的二叉树(不是二叉搜索树)中所有节点(包括根节点)的总和。我从概念上理解,递归处理是最好的方法,但无法弄清楚代码。到目前为止,我的代码是:
class BinaryTree:
def __init__(self,rootObj, leftChild = None, rightChild = None):
self.key = rootObj
self.leftChild = None
self.rightChild = None
self.node=[rootObj, leftChild, rightChild]
def getrightChild(self):
return self.rightChild
def getleftChild(self):
return self.leftChild
def setRootObj(self,obj):
self.key = obj
def getRootObj(self):
return self.key
def sumTree(BinaryTree):
if BinaryTree is None: return 0
return sumTree(BinaryTree.leftChild) \
+ sumTree(BinaryTree.rightChild)\
+ BinaryTree.rootObj
print(sumTree([8,[],[]]))
print(sumTree([9, [6, [ ], [ ]], [65, [ ], [ ]]]))
【问题讨论】:
-
那么你的调试器是怎么说的?
-
你应该决定你的类是代表树还是树节点。如果在某个 var 中保留对根节点的引用,则只能使用节点构建树。节点可以保留对子节点的引用,那么为什么要使用列表来存储树呢?您还必须决定您的 sum 方法是否应该在您的 Tree 或 Node 类中,或者应该是您在树的根节点上调用的免费方法。另请参阅@PatrickHolop 建议。
-
非常感谢大家的帮助和建议。由于您的帮助,我能够制定出解决方案。很高兴知道这个由聪明乐于助人的社区存在!
标签: python python-3.x list sum binary-tree