def split_tree(tree, level=0):
    for name, branch in tree.items():
        if branch:
            paths = split_tree(branch, level - 1)
            if level > 0:
                yield from ([name, *path] for path in paths)
            else:
                yield [name, [node for path in paths for node in path]]
        else:
            yield [name]

tree = {
    'ROOT': {
        'B': {
            'E': {},
            'F': {}
        },
        'C': {},
        'D': {
            'H': {},
            'I': {
                'J': {},
                'K': {}
            }
        }
    }
}
print(*split_tree(tree, 1), sep='\n')
print()
print(*split_tree(tree, 2), sep='\n')