欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法

程序员文章站 2022-07-01 17:12:44
本文实例讲述了c#使用前序遍历、中序遍历和后序遍历打印二叉树的方法。分享给大家供大家参考。具体实现方法如下: public class binarytreenod...

本文实例讲述了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);
}

希望本文所述对大家的c#程序设计有所帮助。