コード例 #1
0
        public IEnumerable <SimpleTreeNode <T> > GetPriorityFirstEnumerable(IComparer <SimpleTreeNode <T> > comparer)
        {
            var queue = new PriorityQueue <SimpleTreeNode <T> >(comparer);

            queue.Add(this);

            while (queue.Count > 0)
            {
                GridSolver.MoveCount++;

                SimpleTreeNode <T> node = queue.Take();

                foreach (SimpleTreeNode <T> child in node.Children)
                {
                    queue.Add(child);
                    if (queue.Count % 1000 == 0)
                    {
                        Log.Debug("Queue size: {QueueSize}", queue.Count);
                    }
                }

                yield return(node);
            }
        }