示例#1
0
        public T GetChildInType <T>() where T : Node
        {
            Queue <Node> nodeStack = new Queue <Node>();

            nodeStack.Enqueue(_root);
            while (nodeStack.Count > 0)
            {
                Node c = nodeStack.Dequeue();
                if (c.GetType() == typeof(T))
                {
                    return(c as T);
                }
                foreach (Node child in c.GetChildren)
                {
                    nodeStack.Enqueue(child);
                }
            }
            return(null);
        }
示例#2
0
        public T[] GetChildrenInType <T>() where T : Node
        {
            Queue <Node> nodeStack = new Queue <Node>();
            List <T>     list      = new List <T>();

            nodeStack.Enqueue(_root);
            while (nodeStack.Count > 0)
            {
                Node c = nodeStack.Dequeue();
                if (c.GetType() == typeof(T))
                {
                    list.Add(c as T);
                }
                foreach (Node child in c.GetChildren)
                {
                    nodeStack.Enqueue(child);
                }
            }
            return(list.ToArray());
        }