Python 遍历二叉树并对每个元素求平方
我希望有人能帮我理解即将到来的CS课程中的二叉树。更具体地说,我想知道是否有人可以在这个问题上帮助我:“返回一棵树,其中所有项目都已平方” 这是我的班级树: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):
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
asTree(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