C#实现二叉树的前序、中序、后序遍历。
public class BinaryTreeNode
{
int value;
BinaryTreeNode left;
BinaryTreeNode right;
/// <summary>
/// 前序遍历
/// </summary>
/// <param name="tree"></param>
public static void PreOrder(BinaryTreeNode tree)
{
if (tree == null)
return;
System.Console.Write(tree.value + " ");
PreOrder(tree.left);
PreOrder(tree.right);
}
/// <summary>
/// 前序遍历循环实现
/// </summary>
/// <param name="tree"></param>
public static void PreOrderLoop(BinaryTreeNode tree)
{
if (tree == null)
return;
Stack<BinaryTreeNode> stack = new Stack<BinaryTreeNode>();
BinaryTreeNode node = tree;
while(node != null || stack.Any()){
if(node != null)
{
stack.Push(node);
System.Console.Write(node.value + " ");
node = node.left;
}
else
{
var item = stack.Pop();
node = item.right;
}
}
}
/// <summary>
/// 中序遍历
/// </summary>
/// <param name="tree"></param>
public static void InOrder(BinaryTreeNode tree)
{
if (tree == null)
return;
InOrder(tree.left);
System.Console.Write(tree.value + " ");
InOrder(tree.right);
}
/// <summary>
/// 中序遍历循环实现
/// </summary>
/// <par