简体   繁体   中英

Convert python list to tree structure in networkx

I have a list of numbers like [1, 2, 2, 3, 3, 2, 3, 3, 4] which I need to convert into a tree, like below:

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

Note: within the list, each number cannot be +2 or more than +2 compared to the preceding value.

This can be done in a natural way, using a stack of nodes:

  • Initialise an empty stack.
  • For each number x in the list:
    • Create a node node with value x .
    • Pop until either the stack is empty, or the top node in the stack has value x - 1 .
    • If the stack is non-empty, add an edge from node to the node at the top of the stack.
    • Push node to the stack.
  • Return the node at the bottom of the stack; this is the root node.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM