开发者社区> 问答> 正文

请问树的垂直结构是怎样的?

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

The output of print this tree vertically will be:
4
2
1 5 6
3 8
7
9
看不懂这个例子

展开
收起
蛮大人123 2016-06-08 18:04:45 1830 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    To understand what's same vertical line, we need to define horizontal distances first. If two nodes have the same Horizontal Distance (HD), then they are on same vertical line. The idea of HD is simple. HD for root is 0, a right edge (edge connecting to right subtree) is considered as +1 horizontal distance and a left edge is considered as -1 horizontal distance. For example, in the below tree, HD for Node 4 is at -2, HD for Node 2 is -1, HD for 5 and 6 is 0 and HD for node 7 is +2.

    关键点是理解HD,垂直距离。

          1(0)
        /    \
       2 (-1)   3(1)
      / \    / \
     4(-2)5(0) 6(0)   7(2)
             \   \
              8(1)   9(3)
    

    然后排序输出
    -2 4
    -1 2
    0 1 5 6
    1 3 8
    2 7
    3 0
    参考: http://stackoverflow.com/questions/20521098/print-a-tree-vertically

    2019-07-17 19:32:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载