private IList <int> GetParentsBelowStackBased(TreeElement searchFromThis) { var stack = new Stack <TreeElement>(); stack.Push(searchFromThis); var parentsBelow = new List <int>(); while (stack.Count > 0) { var current = stack.Pop(); if (current.HasChildren) { parentsBelow.Add(current.id); foreach (var T in current.children) { stack.Push(T); } } } return(parentsBelow); }
public void AddElement(T element, TreeElement parent, int insertPosition) { if (element == null) { throw new ArgumentNullException("element", Maintainer.ConstructError("element is null!")); } if (parent == null) { throw new ArgumentNullException("parent", Maintainer.ConstructError("parent is null!")); } if (parent.children == null) { parent.children = new List <TreeElement> (); } parent.children.Insert(insertPosition, element); element.parent = parent; TreeElementUtility.UpdateDepthValues(parent); TreeElementUtility.TreeToList(root, data); Changed(); }