public PairNode <T> AddChild(T value) { PairNode <T> node = new PairNode <T>(value, this); _children.Add(node); return(node); }
public PairNode <T> FindInChildren(T data) { int i = 0, l = Count; for (; i < l; ++i) { PairNode <T> child = _children[i]; if (child.Data.Equals(data)) { return(child); } } return(null); }
public static IEnumerable <PairNode <ISidecar> > Flatten(this PairNode <ISidecar> e) { //return e.Children.SelectMany(c => c.Children.Flatten()).Concat(new[] { e }); return(e.Children.SelectMany(c => c.Children.Flatten()).Concat(e.Children).Concat(new[] { e })); }
public PairNode(T data, PairNode <T> parent) : this(data) { _parent = parent; _level = _parent != null ? _parent.Level + 1 : 0; }
public bool RemoveChild(PairNode <T> node) { return(_children.Remove(node)); }