public static BackendData.Foo FindNodeRecursive(BackendData.Foo item, int id) { if (item == null) { return((BackendData.Foo)null); } if (item.id == id) { return(item); } if (item.children == null) { return((BackendData.Foo)null); } using (List <BackendData.Foo> .Enumerator enumerator = item.children.GetEnumerator()) { while (enumerator.MoveNext()) { BackendData.Foo nodeRecursive = BackendData.FindNodeRecursive(enumerator.Current, id); if (nodeRecursive != null) { return(nodeRecursive); } } } return((BackendData.Foo)null); }
protected override HashSet <int> GetParentsAbove(int id) { HashSet <int> set = new HashSet <int>(); for (BackendData.Foo foo = BackendData.FindNodeRecursive(this.m_Backend.root, id); foo != null; foo = foo.parent) { if (foo.parent != null) { set.Add(foo.parent.id); } } return(set); }
public HashSet <int> GetParentsBelow(int id) { BackendData.Foo nodeRecursive = BackendData.FindNodeRecursive(this.root, id); if (nodeRecursive == null) { return(new HashSet <int>()); } if (this.m_RecursiveFindParentsBelow) { return(this.GetParentsBelowRecursive(nodeRecursive)); } return(this.GetParentsBelowStackBased(nodeRecursive)); }
public static BackendData.Foo FindNodeRecursive(BackendData.Foo item, int id) { if (item == null) { return(null); } if (item.id == id) { return(item); } if (item.children == null) { return(null); } foreach (BackendData.Foo current in item.children) { BackendData.Foo foo = BackendData.FindNodeRecursive(current, id); if (foo != null) { return(foo); } } return(null); }