0

我希望有人可以帮助我理解即将到来的 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返回Tree(1,Tree(4,Tree(9)),Tree(16,Tree(25)))

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

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

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

有什么建议么?

4

2 回答 2

2

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

你有一棵树,你想把所有元素平方。所以你需要:

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

这应该是足够的暗示,因为它是家庭作业......

于 2013-01-15T19:18:27.880 回答
1

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

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

类 repr 正在显示 None 叶子。如果您不想要它,请修复您的代表。

于 2013-01-15T20:18:20.023 回答