| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
bdnp
10年前发布

C#分别用前序遍历、中序遍历和后序遍历打印二叉树

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);      }