我想开发一个在控制台中可视化树的功能。例如,我喜欢这样的输出:
class YourModelManager(models.Manager):
def get_queryset(self):
qs = super(YourModelManager, self).get_queryset()
return qs.annotate(roll_split=Substr('roll_numb', 5)).order_by('roll_split')
class YourModel(models.Model):
objects = YourModelManager()
我想过很多方法可以做到这一点。但是,每个解决方案都需要额外指向兄弟姐妹。由于我开发了一个红黑树,这意味着我必须在其他函数(如insert(),delete()和旋转)上添加更多代码行,以便在每次更改时设置兄弟指针。那么,是否有人已经在C中开发了这样的功能?
答案 0 :(得分:1)
实际上,它并不困难,不需要对节点结构进行任何修改。您需要按照以下步骤操作:
h
树的高度,w
节点值的最大宽度。width = (w+1) * pow(2, h) - 1
个字符。height = h + (width-w-2) / 2
。h
,w
,width
,height
,节点ptr,其深度及其水平位置和垂直位置。