iterator method

List<T> iterator()

返回其后代所有节点(按照拓扑结构)

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;
}