用Java打印二叉树

用Java打印二叉树,java,printing,binary-tree,pseudocode,Java,Printing,Binary Tree,Pseudocode,我正在尝试实现一个二叉树,为了便于调试,我希望能够打印该树,使其看起来像一棵树。例如: 50 42 71 31 45 60 98 6 11 43 49 55 或者类似的东西。(树总是保证完整的。)我只需要一个算法或伪代码就可以开始了。我只是不知道如何实现这样的东西。谢谢你的帮助。你的问题不完全是二叉树。 每一级的二叉树的左节点必须小于根节点,右节点必须大于根节点 它最好用递归实现 请尝

我正在尝试实现一个二叉树,为了便于调试,我希望能够打印该树,使其看起来像一棵树。例如:

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

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

你的问题不完全是二叉树。 每一级的二叉树的左节点必须小于根节点,右节点必须大于根节点

它最好用递归实现


请尝试以下示例代码和解释。

您在问题中遇到的不完全是二叉树。 每一级的二叉树的左节点必须小于根节点,右节点必须大于根节点

它最好用递归实现


请尝试下面的示例代码和解释。

我将尝试从这里开始:(大胆使用Python2.x而不是伪代码)

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

我将尝试从这一点开始:(大胆使用Python 2.x而不是伪代码)

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

您看到的是一个级别顺序遍历。您看到的是一个级别顺序遍历。哇!我知道。我只是在编插图的数字。我修好了。我认为你给我的链接中的代码不适用于我的问题。显然没有人想用二叉树做这些事情/你对把数据存储成树不感兴趣吗?你只是想把它打印成树吗?数据存储成树,我就是不知道怎么把它打印成树。哎呀!我知道。我只是在编插图的数字。我修好了。我认为你给我的链接中的代码不适用于我的问题。显然没有人想用二叉树做这些事情/您是否对将数据存储为树不感兴趣,是否只想将其打印为树?数据存储为树,我只是不知道如何将其打印为树。这个问题与Python有关吗?我认为这是一个Java问题,提问者要求提供伪代码来说明需要做什么。我使用Python而不是伪代码。实际上,在stackoverflow上已经有了一个相当不错的Java实现:这个问题与Python有关吗?我认为这是一个Java问题,提问者要求提供伪代码来说明需要做什么。我使用Python而不是伪代码。实际上在stackoverflow上已经有了相当不错的Java实现:
# 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)