Мне нужно реализовать древовидную структуру, где каждый узел имеет произвольное количество дочерних элементов. Это кажется простым, когда известно число детей (связанный список, двоичное дерево и т. Д. c.), Но мне не удалось реализовать его в более общем случае.
Например, я попытался расширить этот пример связанного списка , изменив параметр next
в список. Тем не менее, кажется, что нельзя иметь список deferred_type
. Есть идеи, как это реализовать?
from collections import OrderedDict
from numba import njit, jitclass, types, int32, deferred_type, optional
import numpy as np
node_type = deferred_type()
spec = OrderedDict()
spec['data'] = int32
spec['next'] = optional(types.ListType(node_type))
@jitclass(spec)
class LinkedNode:
def __init__(self, data, next):
self.data = data
self.next = next
def prepend(self, data):
return LinkedNode(data, self)
@njit def make_linked_node(data):
return LinkedNode(data, None)
node_type.define(LinkedNode.class_type.instance_type)