本文整理汇总了C#中Graph.DepthFirstTraversal方法的典型用法代码示例。如果您正苦于以下问题:C# Graph.DepthFirstTraversal方法的具体用法?C# Graph.DepthFirstTraversal怎么用?C# Graph.DepthFirstTraversal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Graph
的用法示例。
在下文中一共展示了Graph.DepthFirstTraversal方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CompletedVisitor
public void CompletedVisitor()
{
var graph = new Graph<int>(true);
var vertex1 = new Vertex<int>(1);
var vertex2 = new Vertex<int>(2);
var vertex3 = new Vertex<int>(3);
var vertex4 = new Vertex<int>(4);
var vertex5 = new Vertex<int>(5);
var vertex6 = new Vertex<int>(6);
var vertex7 = new Vertex<int>(7);
graph.AddVertex(vertex1);
graph.AddVertex(vertex2);
graph.AddVertex(vertex3);
graph.AddVertex(vertex4);
graph.AddVertex(vertex5);
graph.AddVertex(vertex6);
graph.AddVertex(vertex7);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex1, vertex3);
graph.AddEdge(vertex1, vertex5);
graph.AddEdge(vertex5, vertex3);
graph.AddEdge(vertex3, vertex6);
graph.AddEdge(vertex3, vertex4);
graph.AddEdge(vertex2, vertex7);
graph.DepthFirstTraversal(new PreOrderVisitor<Vertex<int>>(new CompletedTrackingVisitor<Vertex<int>>()), vertex1);
}
示例2: DepthFirstTraversalExample
public void DepthFirstTraversalExample()
{
// Initialize a new graph instance.
var graph = new Graph<int>(true);
// Add three vertices to the graph.
var vertex1 = graph.AddVertex(1);
var vertex2 = graph.AddVertex(2);
var vertex3 = graph.AddVertex(3);
// Add edges between the vertices.
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex2, vertex3);
// Create a new counting visitor, which will keep track
// of the number of objects that are visited.
var countingVisitor = new CountingVisitor<Vertex<int>>();
// Define in which order the objects should be visited -
// we choose to do a pre-order traversal, however, you can
// also choose to visit post-order. Note that In-Order is
// only available on Binary Trees, and not defined on graphs.
var orderedVisitor = new PreOrderVisitor<Vertex<int>>(countingVisitor);
// Perform a depth first traversal on the graph with
// the ordered visitor, starting from node vertex1.
graph.DepthFirstTraversal(orderedVisitor, vertex1);
// The visitor will have visited 3 items.
Assert.AreEqual(countingVisitor.Count, 3);
}
示例3: Colorize
/// <summary>
/// Colorizes the specified graph by means of a traversal.
/// </summary>
/// <remarks>This is just an example of how to use the traversal algorithms within RadDiagram.</remarks>
/// <param name="g">The graph to colorize.</param>
/// <param name="nodeMap">The node map.</param>
/// <param name="center">The center from which the traversal starts.</param>
private void Colorize(Graph g, IDictionary<Node, RadDiagramShape> nodeMap, Node center)
{
//var geo = App.Current.Resources["glass"] as PathGeometry;
//var glassfill = App.Current.Resources["glassfill"] as RadialGradientBrush;
//var spherefill = App.Current.Resources["spherefill"] as RadialGradientBrush;
// you can use a directed traversal but it will obviously not always reach all nodes
g.IsDirected = false;
var colors = new List<Color>();
for (var i = 0; i < 30; i++) colors.Add(ColorUtilities.RandomBlues);
var group = new TransformGroup();
@group.Children.Add(new ScaleTransform(.7, .7, 05, 05));
@group.Children.Add(new TranslateTransform(0.02, 0.3));
g.DepthFirstTraversal((node, i) =>
{
var shape = nodeMap[node];
shape.Width = 30;
shape.Height = 30;
//shape.Geometry = geo;
shape.BorderBrush = Brushes.LightSteelBlue;
var spherefill = new RadialGradientBrush(new GradientStopCollection { new GradientStop(colors[i], 1d), new GradientStop(Colors.White, .4d), }) { Transform = @group };
shape.Background = spherefill;
shape.Content = i;
}, center);
}
示例4: DirectedPostVisit
public void DirectedPostVisit()
{
var graph = new Graph<int>(true);
var vertex1 = new Vertex<int>(1);
var vertex2 = new Vertex<int>(2);
var vertex3 = new Vertex<int>(3);
var vertex4 = new Vertex<int>(4);
var vertex5 = new Vertex<int>(5);
var vertex6 = new Vertex<int>(6);
var vertex7 = new Vertex<int>(7);
graph.AddVertex(vertex1);
graph.AddVertex(vertex2);
graph.AddVertex(vertex3);
graph.AddVertex(vertex4);
graph.AddVertex(vertex5);
graph.AddVertex(vertex6);
graph.AddVertex(vertex7);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex1, vertex3);
graph.AddEdge(vertex1, vertex5);
graph.AddEdge(vertex5, vertex3);
graph.AddEdge(vertex3, vertex6);
graph.AddEdge(vertex3, vertex4);
graph.AddEdge(vertex2, vertex7);
var trackingVisitor = new TrackingVisitor<Vertex<int>>();
var postOrderVisitor = new PostOrderVisitor<Vertex<int>>(trackingVisitor);
graph.DepthFirstTraversal(postOrderVisitor, vertex1);
Assert.AreEqual(trackingVisitor.TrackingList.Count, graph.Vertices.Count);
Assert.AreEqual(trackingVisitor.TrackingList[0].Data, 7);
Assert.AreEqual(trackingVisitor.TrackingList[1].Data, 2);
Assert.AreEqual(trackingVisitor.TrackingList[2].Data, 6);
Assert.AreEqual(trackingVisitor.TrackingList[3].Data, 4);
Assert.AreEqual(trackingVisitor.TrackingList[4].Data, 3);
Assert.AreEqual(trackingVisitor.TrackingList[5].Data, 5);
Assert.AreEqual(trackingVisitor.TrackingList[6].Data, 1);
}
示例5: ExceptionNullVisitor
public void ExceptionNullVisitor()
{
var graph = new Graph<int>(true);
graph.DepthFirstTraversal(null, new Vertex<int>(4));
}
示例6: ExceptionNullVertex
public void ExceptionNullVertex()
{
var graph = new Graph<int>(true);
graph.DepthFirstTraversal(new PreOrderVisitor<Vertex<int>>(new TrackingVisitor<Vertex<int>>()), null);
}