iterator method
返回其后代所有节点(按照拓扑结构)
Implementation
List<T> iterator() {
List<T> resultList = [];
T? node = this as T;
List<T> current = [];
List<T> next = [node];
List<T> children = [];
do {
current = List.from(next.reversed);
next = [];
while (current.isNotEmpty) {
node = current.removeLast();
resultList.add(node);
children = node.children;
if (children.isNotEmpty) {
for (int i = 0, n = children.length; i < n; ++i) {
next.add(children[i]);
}
}
}
} while (next.isNotEmpty);
return resultList;
}