我试图创建一个打印出二进制树对象的算法,该对象表示0到127范围内的整数。
示例
如果树中唯一的元素是0,则打印出来:
/
0
示例。
如果树中的唯一元素是0和1,则打印:
/\
0 1
示例
如果树中唯一的元素是0,1和2,则打印出来:
/ \
0 1
/ \
0 1
示例
如果树中的元素是0,1,...,8,则打印:
/ \
0 1
/ \ / \
0 1 0 1
/ \ / \ / \ / \
0 1 0 1 0 1 0 1
诸如此类!
首先,
答案 0 :(得分:0)
这是对绘图的尝试(Python 2/3)。
def go (n, k):
m = (1 << (n + 1)) - 1
s = " " * m + " /" + " " * (2 * m - 1) + "\\ " + " " * m
print (" ".join ([s] * k))
t = " " * m + "0 " + " " * (2 * m - 1) + " 1" + " " * m
print (" ".join ([t] * k))
if n > 0:
go (n - 1, k << 1)
go (0, 1)
go (1, 1)
go (2, 1)
go (3, 1)
树木是:
对于0..1:
/ \
0 1
对于0..3:
/ \
0 1
/ \ / \
0 1 0 1
对于0..7:
/ \
0 1
/ \ / \
0 1 0 1
/ \ / \ / \ / \
0 1 0 1 0 1 0 1
0..15:
/ \
0 1
/ \ / \
0 1 0 1
/ \ / \ / \ / \
0 1 0 1 0 1 0 1
/ \ / \ / \ / \ / \ / \ / \ / \
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
请注意,每行数字均匀分布,因此宽度比草图宽。
对于数字0..127,并且在最后一行上每个数字有128位和4个字符,其宽度为512个字符,最后可能减去几个空格。我怀疑512柱表是一件好事,所以也许这对你的问题来说不是一个很好的解决方案。不过,它显示了你将获得的估计值。