垂直打印树

时间:2014-08-01 08:06:55

标签: c++ tree binary-tree

知道如何打印这样的树吗?

       2               
      / \       
     /   \      
    /     \     
   /       \    
   7       5       
  / \       \   
 /   \       \  
 2   6       9   
    / \     /   
    5 8     4 

1 个答案:

答案 0 :(得分:1)

水平解决方案运行良好,因为您可以使用pre-order深度优先搜索(如您所示)从每个子树构造树,这与控制台在a输出一行的方式很好地对齐时间。

垂直解决方案更加困难,因为您需要知道树末端的所有节点才能计算出整个宽度。因此,您需要分析树,存储数据然后开始绘图。

另一个选项虽然可能不那么“优雅”(依赖于定义),但可能会使用类似curses库的东西,其中显示列和行的概念是可互换的。