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;
}
}
运行结果: