如何打印二进制搜索树?

时间:2012-04-20 14:52:56

标签: algorithm data-structures assembly binary-tree binary-search-tree

我已经用mips实现了bst,我需要打印这棵树。 每个节点都有以下四个信息

  • 其价值

  • 父母的地址

  • 离开孩子的地址

  • 正确的孩子的地址

我应该按以下格式打印树。 (x表示没有孩子)

12

8-16

x-9  13-17

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

您能否建议一种实施此打印方法的方法?

2 个答案:

答案 0 :(得分:1)

当您需要逐级打印二进制树时,打印信息的最常用方法是使用广度优先搜索方法遍历树。 其余的很简单,应该不是问题。 :)

答案 1 :(得分:1)

您打印树的顺序是广度优先(逐级)遍历。一个选项如下:维护一个工作列表,最初用树的根植入。然后,重复从工作列表中出列,打印当前元素(如果不存在,则打印x),然后将两个子项添加到工作列表中。你可能需要一些方法来跟踪你完成遍历树的时间,可能先计算节点数,然后在打印那么多节点后停止。

也就是说,因为你在MIPS中这样做,一个更简单的选择是将树线性化为一个数组,然后打印数组。如果以类似于隐式二进制堆中节点编号的方式对节点编号,则可以递归/迭代地遍历树,使用树节点填充数组,然后遍历阵列打印所有内容。

希望这有帮助!