【问题标题】:Printing a binary tree in Java [duplicate]用Java打印二叉树[重复]
【发布时间】:2013-05-11 21:43:38
【问题描述】:

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

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

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

【问题讨论】:

  • 您正在查看级别顺序遍历。

标签: java printing binary-tree pseudocode


【解决方案1】:

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

最好用递归来实现。

试试这个link 获取示例代码和解释。

【讨论】:

  • 哎呀!我知道。我只是在为插图编数字。我修好了它。我认为您给我的链接中的代码不适用于我的问题。显然没有人想用二叉树做这些事情。 ://
  • 您对将数据存储为树不感兴趣,您只想像树一样打印它吗?
  • 数据存储为一棵树,我只是不知道如何像树一样打印它。
【解决方案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)

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

【讨论】:

  • 这个问题和Python有关系吗?我认为这是一个 Java 问题。
  • 提问者要求提供伪代码来说明需要做什么。我使用 Python 而不是伪代码。
  • 实际上在 stackoverflow 上已经有相当不错的 Java 实现了:stackoverflow.com/questions/4965335/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
相关资源
最近更新 更多