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); }
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); } }