コード例 #1
0
        public int [] GetElementIndexArrayCulmativeFull()
        {
            int [] elements      = new int [CulmativeFullSize];
            int    element_index = 0;
            // Depth first for low memory
            Stack <Tuple <MaxTreeNode <ElementType>, int> > node_stack = new Stack <Tuple <MaxTreeNode <ElementType>, int> >();

            node_stack.Push(new Tuple <MaxTreeNode <ElementType>, int>(this, 0));
            while (node_stack.Count != 0)
            {
                Tuple <MaxTreeNode <ElementType>, int> node_index_pair = node_stack.Pop();
                MaxTreeNode <ElementType> node = node_index_pair.Item1;
                int node_index = node_index_pair.Item2;
                if (node_index < node.children.Count)
                {
                    node_stack.Push(new Tuple <MaxTreeNode <ElementType>, int>(node, node_index + 1));
                    node_stack.Push(new Tuple <MaxTreeNode <ElementType>, int>(node.children[node_index], 0));
                }
                else
                {
                    node.GetElementIndexArrayCulmativeRealRBA(elements, element_index);
                    element_index = element_index + node.NodeElementIndexes.Count;
                }
            }
            return(elements);
        }