예제 #1
0
        /// <summary>
        /// Adds the node.
        /// </summary>
        /// <param name="NodeValue">The node value.</param>
        /// <returns></returns>
        public SortedTreeNode AddNode(T NodeValue)
        {
            if (GetNode(NodeValue) != null)
            {
                throw new SortedTreeNodeException("this tree already contains this value");
            }
            SortedTreeNode newnode = new SortedTreeNode(NodeValue, this, null, 0);

            m_Roots.Add(newnode);
            RaiseTreeHasChangedEvent();
            return(newnode);
        }
예제 #2
0
        /// <summary>
        /// Gets the nodes from level.
        /// </summary>
        /// <param name="level">The level.</param>
        /// <returns></returns>
        public SortedTreeNodeList GetNodesFromLevel(int level)
        {
            MarkAllUnvisited();
            SortedTreeNodeList nodestobereturned = new SortedTreeNodeList();

            foreach (SortedTreeNode node in m_Roots)
            {
                nodestobereturned.Add(node.GetNodesFromLevel(level));
            }
            return(nodestobereturned);
        }
예제 #3
0
            /// <summary>
            /// Gets the nodes from level.
            /// </summary>
            /// <param name="level">The level.</param>
            /// <returns></returns>
            public SortedTreeNodeList GetNodesFromLevel(int level)
            {
                SortedTreeNodeList nodestobereturned = new SortedTreeNodeList();

                if (!Visited && level > 0)
                {
                    Visited = true;
                    if (Height == level)
                    {
                        nodestobereturned.Add(this);
                    }
                    else
                    {
                        //zakladamy ze pewien element nie moze miec siebie samego jako dziecka
                        foreach (KeyValuePair <int, SortedTreeNode> KVPNode in mChildNodes)
                        {
                            nodestobereturned.Add(KVPNode.Value.GetNodesFromLevel(level));
                        }
                    }
                }
                return(nodestobereturned);
            }