1

嗨,我已经在mips中实现了一个bst,我需要打印这棵树。 每个节点有以下四种信息如何打印二进制搜索树?

  • 其价值

  • 父母的地址

  • 左孩子的地址

  • 右子地址

我应该PRI按以下格式树。 (x表示没有儿童)

12 

8-16 

x-9 13-17 

x-x x-11 x-x x-x 

能否请您提出一个方法来实现这种印刷方法?

+0

尝试使用[graphviz的](http://www.graphviz.org/)。这个作业也是? :-) – 2012-04-20 14:59:51

+1

是的,这是在“MIPS asesmbly”做功课的。我不是要求你为我写的代码,我只问一个办法做到这一点。 – 2012-04-20 15:01:28

+0

@JamesAndres使用自己的格式帮助的高级程序如何,因为他正在使用程序集? – byrondrossos 2012-04-20 15:02:28

回答

1

的排序,其中要打印的树是一种广度优先(级别由级)穿越。一种选择如下:维护一个工作清单,最初用树的根部播种。然后,从工作列表中反复出列,打印当前元素(如果没有任何元素,则输出x),然后将两个子元素添加到工作列表中。您需要一些方法来跟踪您完成遍历树的时间,可能是先计算节点数,然后在打印完许多节点后停止。

这就是说,因为你是在MIPS这样做,一个简单的选择是树线性化到一个数组,然后打印阵列。如果您在类似于你如何在一个隐含的二元堆人数节点的方式编号的节点,您可以递归/迭代遍历树,充满树节点数组中,然后走过去阵列式打印所有的东西。

希望这会有所帮助!

1

,因为你需要你的二叉树的要打印的级别水平,打印信息的最obivous方式是遍历使用广度优先搜索方法的树。 其余的很简单,不应该是一个问题。 :)