首页 > 解决方案 > 在networkx中将python列表转换为树结构

问题描述

我有一个数字列表[1, 2, 2, 3, 3, 2, 3, 3, 4],我需要将其转换为树,如下所示:

             1
          /  |  \
         2   2   2
            / \  / \
           3   3 3  3
                    \
                     4

注意:在列表中,每个数字与前一个值相比不能+2或大于+2。

标签: pythonpython-3.xtreenetworkx

解决方案


这可以使用一堆节点以自然的方式完成:

  • 初始化一个空栈。
  • 对于列表中的每个数字x
    • 创建一个node具有 value的节点x
    • 弹出直到堆栈为空,或者堆栈中的顶部节点具有 value x - 1
    • 如果堆栈非空,则node向堆栈顶部的节点添加一条边。
    • node入堆栈。
  • 返回栈的节点;这是根节点。

推荐阅读