Пример #1
0
 public OysterIterator(BSTNode reviews, OysterIterator parent = null)
 {
     if (reviews == null)
     {
         state = 0;
         if (parent != null)
         {
             parent.state = (parent.state + 1) % 4;
         }
         return;
     }
     node     = reviews;
     state    = 1;
     iterator = new OysterIterator(reviews.Left, this);
 }
Пример #2
0
        public bool Next()
        {
            switch (state)
            {
            case 0:
                return(false);

            case 1:
                if (!this.iterator.Next())
                {
                    this.state++;
                }
                return(true);

            case 2:
            {
                state         = 3;
                this.iterator = new OysterIterator(node.Right, this);
                if (state == 0)
                {
                    return(false);
                }
                return(true);
            }

            case 3:
                if (!this.iterator.Next())
                {
                    this.state = 0;
                    return(false);
                }
                return(true);

            default:
                return(false);
            }
        }