用Java打印二叉树

时间:2013-05-16 20:30:16

标签: java printing binary-tree pseudocode

我正在尝试实现二叉树,为了便于调试,我希望能够打印树,因此它实际上看起来像一棵树。例如:

              50
      42              71
  31      45      60      98
6    11 43  49  55

或类似的东西。 (树总是保证完整。)我只需要一个算法或伪代码来启动我。我只是不知道如何实现这样的东西。谢谢你的帮助。

2 个答案:

答案 0 :(得分:-1)

您在问题中所拥有的并不完全是二叉树。 每个级别的二叉树必须使左节点小于根节点,右节点小于根节点。

最好用递归来实现。

请尝试使用此link获取示例代码和说明。

答案 1 :(得分:-2)

我会尝试启动它:(自由使用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)

因为(我相信)问题更多的是格式化而不是实际访问树节点...我刚刚将树展平为列表列表.. 这实际上不起作用,但我认为它可以重新安排,以使其工作....