private IEnumerable <ISymbolicExpressionTreeNode> IterateBreadthOrdered(ISymbolicExpressionTreeNode node, ISymbolicExpressionTreeNodeComparer comparer) { var list = new List <ISymbolicExpressionTreeNode> { node }; int i = 0; while (i < list.Count) { var n = list[i]; if (n.SubtreeCount > 0) { var subtrees = commutativeSymbols.Contains(node.Symbol.Name) ? n.Subtrees.OrderBy(x => x, comparer) : n.Subtrees; list.AddRange(subtrees); } i++; } return(list); }
private IEnumerable<ISymbolicExpressionTreeNode> IterateBreadthOrdered(ISymbolicExpressionTreeNode node, ISymbolicExpressionTreeNodeComparer comparer) { var list = new List<ISymbolicExpressionTreeNode> { node }; int i = 0; while (i < list.Count) { var n = list[i]; if (n.SubtreeCount > 0) { var subtrees = commutativeSymbols.Contains(node.Symbol.Name) ? n.Subtrees.OrderBy(x => x, comparer) : n.Subtrees; list.AddRange(subtrees); } i++; } return list; }