Return all direct children of the given tree, that are either
    a nucleus, satellite or a leaf node (i.e. all children except
    for relation nodes.)

def get_nucsat_subtrees(parented_tree):
    """Return all direct children of the given tree, that are either
    a nucleus, satellite or a leaf node (i.e. all children except
    for relation nodes.)
    """
    if is_leaf(parented_tree):
        return [parented_tree]
    
    nucsat_children = []
    for child in parented_tree:
        if  is_leaf(child) or child.label() in ('N', 'S'):
            nucsat_children.append(child)
        else:
            nucsat_children.extend( get_nucsat_subtrees(child) )
    return nucsat_children