Fix depth tree in Python

I want to implement a tree structure with a fixed depth, i.e. when children are added to the nodes of the petals, the entire tree structure should "move up". It also means that multiple roots can exist simultaneously. See the example below: alt text In this example, green nodes are added at iteration 1, removing the top node (gray) and making two blue nodes at the root nodes K = 0 and Iteration 1.

How do I implement this?

+5
source share
1 answer

node . node , ( node) , None. node .

class Node(object):

    depth = 4

    def __init__(self, parent, contents):
        self.parent = parent
        self.contents = contents
        self.children = []


def create_node(trees, parent, contents):
    """Adds a leaf to a specified node in the set of trees.

    Note that it has to have access to the container that holds all of the trees so
    that it can delete the appropriate parent node and add its children as independent 
    trees. Passing it in seems a little ugly. The container of trees could be a class
    with this as a method or you could use a global list. Or something completely
    different. The important thing is that if you don't delete every reference to the
    old root, you'll leak memory.
    """
    parent.children.append(Node(parent, contents))

    i = 0:
    L = Node.depth - 1
    while i < L:
        parent = parent.parent
        if not parent:
            break
        i += 1
    else:
        for node in parent.children:
            node.parent = None
        trees.extend(parent.children)
        i = trees.find(parent)
        del trees[i]
+2

All Articles