public List <bool> Traverse(char symbol, List <bool> data) { if (NeighbourRight == null && NeighbourLeft == null) { return(symbol.Equals(Symbol) ? data : null); } List <bool> left = null; List <bool> right = null; if (NeighbourLeft != null) { var leftPath = new List <bool>(); leftPath.AddRange(data); leftPath.Add(false); left = NeighbourLeft.Traverse(symbol, leftPath); } if (NeighbourRight == null) { return(left ?? right); } var rightPath = new List <bool>(); rightPath.AddRange(data); rightPath.Add(true); right = NeighbourRight.Traverse(symbol, rightPath); return(left ?? right); }
public List <bool> Traverse(char symbol, List <bool> data) { if (NeighbourRight == null && NeighbourLeft == null) { if (symbol.Equals(this.Symbol)) { return(data); } else { return(null); } } else { List <bool> left = null; List <bool> right = null; if (NeighbourLeft != null) { List <bool> leftpath = new List <bool>(); leftpath.AddRange(data); leftpath.Add(false); left = NeighbourLeft.Traverse(symbol, leftpath); } if (NeighbourRight != null) { List <bool> rightPath = new List <bool>(); rightPath.AddRange(data); rightPath.Add(true); right = NeighbourRight.Traverse(symbol, rightPath); } if (left != null) { return(left); } else { return(right); } } }