Tag: 语言 不可知

以文本/ ASCIIforms渲染水平二进制树的算法

这是一个非常普通的二叉树,除了其中一个节点可能是空的。 我想找到一种以水平方式输出它的方法(也就是说,根节点在左边并向右扩展)。 我有一些垂直扩展树木的经验(根节点在顶部,向下扩展),但在这种情况下,我不知道从哪里开始。 最好是遵循以下几条规则: 如果一个节点只有一个子节点,则可以将其作为冗余跳过(始终显示“终端节点”,没有子节点) 相同深度的所有节点必须垂直对齐; 所有节点必须位于所有较低深度节点的右侧,并且位于所有较深节点的左侧。 节点具有包含其深度的字符串表示。 每个“端节点”都有自己独特的线路; 也就是说,行数是树中终端节点的数量,当终端节点在一条线上时,在该终端节点之后该行上可能没有其他内容。 作为最后一条规则的结果,根节点在左上角或左下角可能会更好; 左上角是首选。 例如,这是一个有效的树,有六个端节点(节点由一个名称及其深度表示): 编辑:请参阅问题的底部以获得替代,更容易渲染 [A0] ———– [B3] —— [C5] —— [D8] \ —- \ ——- [e9] —- [f5] \ – [G1] ——– [H4] —— [I6] \ ——————– [j10] \ – [K3] 它代表垂直的显式二叉树: 0 a / \ 1克* / \ \ 2 * * * / […]