我正在尝试实现一棵二叉树,为了便于调试,我希望能够打印这棵树,使它看起来像一棵树。例如:
50
42 71
31 45 60 98
6 11 43 49 55
或类似的东西。(树总是保证是完整的。)我只需要一个算法或伪代码就可以开始了。我只是不知道如何实现这样的东西。谢谢你的帮助。
我正在尝试实现一棵二叉树,为了便于调试,我希望能够打印这棵树,使它看起来像一棵树。例如:
50
42 71
31 45 60 98
6 11 43 49 55
或类似的东西。(树总是保证是完整的。)我只需要一个算法或伪代码就可以开始了。我只是不知道如何实现这样的东西。谢谢你的帮助。
我将尝试从这里开始:(冒昧地使用 Python 2.x 而不是伪代码)。
# Doesn't work yet.
# Assumes two characters ('42', '06' etc) per string representation of number.
# If not, alter the formatting %02d as appropriate.
global line_length
line_length=80
def pad(number_of_nodes):
global line_length
return "_"*(line_length/number_of_nodes)
def printlevel(nodes):
global line_length
padstring=pad(len(nodes))
stringnodes=[ "%02d"%(n) for n in nodes ]
leader="_"* abs( (line_length/2) - len(padstring) )
print leader, padstring.join(stringnodes)
for level in [ [50],
[42,71],
[31,45,60,98],
[6,11,43,49,55]
]:
printlevel(level)
因为(我相信)这个问题更多的是格式化而不是实际访问树节点......我刚刚将树展平为列表列表。这实际上不起作用,但我认为它可以重新排列让它工作....