這裏是名爲B節點的類,Python類2.7二叉樹
class BNode:
def __init__(self, value=None, left=None, right=None):
self.value = value
self.left = left
self.right = right
def __repr__(self):
return '' % (self.value, self.left, self.right)
,並打印出以下
>>> root = BNode('root')
>>> root.left = BNode('left')
>>> root.right = BNode('right')
>>> root.left.left = BNode('left-left')
>>> root.left.right = BNode('left=right')
>>> print root
root (
left (
left-left (
None
None)
left-right (
None
None))
right (
None
None))
Q)修改類,以便像下面的結果可以作出。
root (
left (
left-left (
None
None)
left-right (
None
None))
right (
None
None))
我的回答是以下一個。
class BNode:
def __init__(self, value=None, left=None, right=None):
self.value = value
self.left = left
self.right = right
def __repr__(self, level=0):
R = ''
for ele in range(level):
R += '\t'
R += str(self.value)
R += ' ('
R += '\n'
if isinstance(self.left, BNode):
R += BNode.__repr__(self.left, level+1)
else:
for ele in range(level+1):
R += '\t'
R += str(self.left)
R += '\n'
if isinstance(self.right, BNode):
R += BNode.__repr__(self.right, level+1)
else:
for ele in range(level+1):
R += '\t'
R += str(self.right)
R += ')'
return R
但我想知道它是否是這個問題的最佳解決方案。 我覺得有更好的一個... 有沒有一些有效的方法?
在此先感謝〜:)