/// <summary> ///IsEmpty 的测试 ///</summary> public void IsEmptyTestHelper <T>() { int size = 2; // TODO: 初始化为适当的值 SequenceQueue <T> target = new SequenceQueue <T>(size); // TODO: 初始化为适当的值 bool expected = true; // TODO: 初始化为适当的值 bool actual; actual = target.IsEmpty(); Assert.AreEqual(expected, actual); target.In(default(T)); Assert.AreEqual(false, target.IsEmpty()); }
/// <summary> /// 层序遍历节点 /// </summary> /// <param name="node"></param> public void LevelOrder(Node <T> node) { if (node == null) { return; } DataStructureLib.SequenceQueue <Node <T> > queue = new SequenceQueue <Node <T> >(100); queue.In(node); while (!queue.IsEmpty()) { Node <T> currentNode = queue.Out(); Console.WriteLine("Node Data :{0}", currentNode.Data); if (currentNode.LeftChild != null) { queue.In(currentNode.LeftChild); } if (currentNode.RightChild != null) { queue.In(currentNode.RightChild); } } }
/// <summary> /// 广度优先遍历当前点的邻接点 /// </summary> /// <param name="currentIndex"></param> /// <param name="currenNodeData"></param> public void BreadthFirstSearch(int currentIndex, ref string currenNodeData) { visited[currentIndex] = 1; #region path currenNodeData += vertexNodeList[currentIndex].Data.Data.ToString(); currenNodeData += pathSplitchar; #endregion //队列 SequenceQueue <int> queue = new SequenceQueue <int>(visited.Length); queue.In(currentIndex); while (!queue.IsEmpty()) { int currentVertexNodeIndex = queue.Out(); //取出当前邻接节点的第一个邻接点 AdjacentListNode p = vertexNodeList[currentVertexNodeIndex].FirstAdjacentListNode; //邻接表的 while (p != null) { if (visited[p.AdjacentVertexNodeIndex] == 0) { visited[p.AdjacentVertexNodeIndex] = 1; #region path currenNodeData += vertexNodeList[p.AdjacentVertexNodeIndex].Data.Data.ToString(); currenNodeData += pathSplitchar; #endregion queue.In(p.AdjacentVertexNodeIndex); } p = p.Next; } } }