⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeenumerator.cs

📁 微软系列丛书<<C#2005从入门到精通>>
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace BinaryTree
{
    class TreeEnumerator<T> : IEnumerator<T> where T : IComparable<T>
    {
        public TreeEnumerator(Tree<T> data)
        {
            this.currentData = data;
        }

        private void populate(Queue<T> enumQueue, Tree<T> tree)
        {
            if (tree.LeftTree != null)
            {
                populate(enumQueue, tree.LeftTree);
            }

            enumQueue.Enqueue(tree.NodeData);
            
            if (tree.RightTree != null)
            {
                populate(enumQueue, tree.RightTree);
            }
        }

        private Tree<T> currentData = null;
        private T currentItem = default(T);
        private Queue<T> enumData = null;

        #region IEnumerator<T> Members

        T IEnumerator<T>.Current
        {
            get 
            {
                if (this.enumData == null)
                    throw new InvalidOperationException("Use MoveNext before calling Current");

                return this.currentItem;
            }
        }

        #endregion

        #region IDisposable Members

        void IDisposable.Dispose()
        {
            //throw new Exception("The method or operation is not implemented.");
        }

        #endregion

        #region IEnumerator Members

        object System.Collections.IEnumerator.Current
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        bool System.Collections.IEnumerator.MoveNext()
        {
            if (this.enumData == null)
            {
                this.enumData = new Queue<T>();
                populate(this.enumData, this.currentData);
            }

            if (this.enumData.Count > 0)
            {
                this.currentItem = this.enumData.Dequeue();
                return true;
            }

            return false;
        }

        void System.Collections.IEnumerator.Reset()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -