DFS and BFS

it2025-05-03  13

DFS and BFS

class Program { static void Main(string[] args) { var values = Enumerable.Range(0, 10).ToArray(); var bst = GetTree(values, 0, values.Length - 1); DFS(bst); Console.WriteLine("------------------------------------------"); BFS(bst); } static Node GetTree(int[] values, int LowIndex, int HighIndex) { if (LowIndex > HighIndex) { return null; } var MiddleIndex = LowIndex + (HighIndex - LowIndex) / 2; var node = new Node(values[MiddleIndex]); node.Left = GetTree(values, LowIndex, MiddleIndex - 1); node.Right = GetTree(values, MiddleIndex + 1, HighIndex); return node; } static void DFS(Node node) { if (node == null) return; DFS(node.Left); Console.WriteLine(node.Value); DFS(node.Right); } static void BFS(Node root) { var q = new Queue<Node>(); q.Enqueue(root); while (q.Count > 0) { var node = q.Dequeue(); Console.WriteLine(node.Value); if (node.Left != null) q.Enqueue(node.Left); if (node.Right != null) q.Enqueue(node.Right); } } } class Node { public int Value { get; set; } public Node Left { get; set; } public Node Right { get; set; } public Node(int value) { Value = value; } }

运行结果:

最新回复(0)