相关疑难解决方法(0)

C如何将二进制树"绘制"到控制台

可以使用哪些算法在控制台中绘制二叉树?树以C实现.例如,数字:2 3 4 5 8的BST将在控制台中显示为:

替代文字

c algorithm layout binary-tree

69
推荐指数
5
解决办法
8万
查看次数

以文本/ ASCII形式渲染水平二进制树的算法

它是一个非常普通的二叉树,除了其中一个节点可能为空的事实.

我想找到一种以水平方式输出它的方法(也就是说,根节点在左侧并向右扩展).

我有一些垂直扩展树木的经验(根节点在顶部,向下扩展),但在这种情况下,我不知道从哪里开始.

最好是遵循以下几条规则:

  • 如果一个节点只有一个子节点,则可以将其作为冗余跳过(始终显示"终端节点",没有子节点)
  • 相同深度的所有节点必须垂直对齐; 所有节点必须位于所有较低深度节点的右侧,并且位于所有较深节点的左侧.
  • 节点具有包含其深度的字符串表示.
  • 每个"端节点"都有自己独特的线路; 也就是说,行数是树中终端节点的数量,当终端节点在一条线上时,该终端节点之后该行上可能没有其他内容.
  • 作为最后一条规则的结果,根节点在左上角或左下角可能会更好; 左上角是首选.

例如,这是一个有效的树,有六个端节点(节点由一个名称及其深度表示):编辑:请参阅问题的底部以获得替代,更容易渲染

        
[a0]-----------[b3]------[c5]------[d8]
    \              \         \----------[e9]
     \              \----[f5]
      \-[g1]--------[h4]------[i6]
            \           \--------------------[j10]
             \-[k3]

它代表垂直的显式二叉树:

0              a
              / \
1            g   *
            / \   \
2          *   *   *
          /     \   \
3        k       *   b
                /   / \
4              h   *   *
              / \   \   \
5            *   *   f   c
            /     \     / \
6          *       i   *   *
          /           /     \
7        *           *       *
        /           / …

ruby language-agnostic algorithm text binary-tree

8
推荐指数
1
解决办法
1964
查看次数

标签 统计

algorithm ×2

binary-tree ×2

c ×1

language-agnostic ×1

layout ×1

ruby ×1

text ×1