將寫內容過程常用的一些內容段做個備份衫哥,下面內容段是關于C#分別用前序遍歷、中序遍歷和后序遍歷打印二叉樹的內容襟锐。
public class BinaryTreeNode
{
? ? public BinaryTreeNode Left { get; set; }
? ? public BinaryTreeNode Right { get; set; }
? ? public int Data { get; set; }
? ? public BinaryTreeNode(int data)
? ? {
? ? ? ? this.Data = data;
? ? }
}
? ? public enum TreeTraversal
? ? {
? ? ? ? PREORDER,
? ? ? ? INORDER,
? ? ? ? POSTORDER
? ? }
? ? public void PrintTree(BinaryTreeNode root, TreeTraversal treeTraversal)
? ? {
? ? ? ? Action<int> printValue = delegate(int v)
? ? ? ? {
? ? ? ? ? ? Console.Write(v + " ");
? ? ? ? };
? ? ? ? switch (treeTraversal)
? ? ? ? {
? ? ? ? ? ? case TreeTraversal.PREORDER:
? ? ? ? ? ? ? ? PreOrderTraversal(printValue, root);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case TreeTraversal.INORDER:
? ? ? ? ? ? ? ? InOrderTraversal(printValue, root);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case TreeTraversal.POSTORDER:
? ? ? ? ? ? ? ? PostOrderTraversal(printValue, root);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? default: break;
? ? ? ? }
? ? }
? ? public void PreOrderTraversal(Action<int> action, BinaryTreeNode root)
? ? {
? ? ? ? if (root == null)
? ? ? ? ? ? return;
? ? ? ? action(root.Data);
? ? ? ? PreOrderTraversal(action, root.Left);
? ? ? ? PreOrderTraversal(action, root.Right);
? ? }
? ? public void InOrderTraversal(Action<int> action, BinaryTreeNode root)
? ? {
? ? ? ? if (root == null)
? ? ? ? ? ? return;
? ? ? ? InOrderTraversal(action, root.Left);
? ? ? ? action(root.Data);
? ? ? ? InOrderTraversal(action, root.Right);
? ? }
? ? public void PostOrderTraversal(Action<int> action, BinaryTreeNode root)
? ? {
? ? ? ? if (root == null)
? ? ? ? ? ? return;
? ? ? ? PostOrderTraversal(action, root.Left);
? ? ? ? PostOrderTraversal(action, root.Right);
? ? ? ? action(root.Data);
? ? }? ? ? ? ? ? ? ?