Python 遍历二叉树并对每个元素求平方

Python 遍历二叉树并对每个元素求平方,python,tree,binary-tree,Python,Tree,Binary Tree,我希望有人能帮我理解即将到来的CS课程中的二叉树。更具体地说,我想知道是否有人可以在这个问题上帮助我:“返回一棵树,其中所有项目都已平方” 这是我的班级树: clas Tree(object): def __init__(self, entry, left=None, right=None): self.entry = entry self.left = left self.right = right def __repr__(self):

我希望有人能帮我理解即将到来的CS课程中的二叉树。更具体地说,我想知道是否有人可以在这个问题上帮助我:“返回一棵树,其中所有项目都已平方”

这是我的班级树:

clas Tree(object):
 def __init__(self, entry, left=None, right=None):
        self.entry = entry
        self.left = left
        self.right = right

def __repr__(self):
    args = repr(self.entry)
    if self.left or self.right:
        args += ', {0}, {1}'.format(repr(self.left), repr(self.right))
    return 'Tree({0})'.format(args)   
如果我有一棵名为t的树,其中t的定义为:

t=Tree(1,Tree(2,Tree(3)),Tree(4,Tree(5)))

我想返回
t
as
Tree(1,Tree(4,Tree(9)),Tree(16,Tree(25))

所以我提出了这个函数,它返回一个平方树,但我想去掉“无”

输出:树(4,树(9,树(16),无),树(25,树(36),无))


有什么建议吗?

树是递归结构。编写树操作程序最简单的方法通常是递归。因此,请考虑递归步骤

你有一棵树,你想让所有的元素都成正方形。因此,您需要:

  • 平方根元素
  • 将左右子树中的所有元素平方

这应该是一个足够的提示,因为它是家庭作业…

树是递归结构。编写树操作程序最简单的方法通常是递归。因此,请考虑递归步骤

你有一棵树,你想让所有的元素都成正方形。因此,您需要:

  • 平方根元素
  • 将左右子树中的所有元素平方
这应该是一个足够的提示,因为这是家庭作业…

之后

t=Tree(1,Tree(2,Tree(3)),Tree(4,Tree(5)))

t是

Tree(1,Tree(2,Tree(3),None),Tree(4,Tree(5),None))

类repr正在显示无叶。如果您不希望,请在之后修复您的报告。

t=Tree(1,Tree(2,Tree(3)),Tree(4,Tree(5)))

t是

Tree(1,Tree(2,Tree(3),None),Tree(4,Tree(5),None))


类repr正在显示无叶。如果您不希望,请修复您的报告。

它们应该是双倍还是平方?你说加倍,但例子是平方的…哦,它应该是平方的,而不是加倍的。TheodrosZelleke有足够的信心编辑你的问题,但我不确定-你应该返回一个新的树,还是修改现有的树?@Japreis,好的一点——我没有考虑差异——抱歉如果它是错的——但是仍然需要树遍历,它们应该是加倍还是平方?你说加倍,但例子是平方的…哦,它应该是平方的,而不是加倍的。TheodrosZelleke有足够的信心编辑你的问题,但我不确定-你应该返回一个新的树,还是修改现有的树?@Japreis,好点——我没有考虑差异——抱歉如果它是错的-但是仍然需要树遍历
def square_tree(tree,fn):
    if(tree == None):
        return tree
    else:
        tree.entry = fn(tree.entry)
        map_tree(tree.left,fn)
        map_tree(tree.right,fn)
    return tree