findOrInsertStack method
Implementation
StateElement findOrInsertStack(
StateElement root, List<int> stack, int index, int stack_top) {
var state_number = stack[index];
for (StateElement? p = root; p != null; p = p.siblings) {
if (p.number == state_number) {
return (index == stack_top
? p
: p.children == null
? makeStateList(p, stack, index + 1, stack_top)
: findOrInsertStack(p.children!, stack, index + 1, stack_top));
}
}
state_element_size++;
var node = StateElement();
node.number = state_number;
node.parent = root.parent;
node.children = null;
node.siblings = root.siblings;
root.siblings = node;
return (index == stack_top
? node
: makeStateList(node, stack, index + 1, stack_top));
}