本文介绍C#实现二叉树的先序遍历、中序遍历、后序遍历 1、先序遍历 /// /// 先序遍历 /// /// static void PreOrder(BiTNode T) { if (T!=null) { visit(T); PreOrder(T.lchild); PreOrder(T.rchild); } 2、中序遍历 /// /// 中序遍历 /// /// static void InOrder(BiTNode T) { if (T != null) {
InOrder(T.lchild);
visit(T);
InOrder(T.rchild);
}
}
3、后序遍历 /// /// 后序遍历 /// /// static void PostOrder(BiTNode T) { if (T != null) {
PostOrder(T.lchild);
PostOrder(T.rchild);
visit(T);
}
}
4、节点访问 /// /// 结点值的输出 /// static void visit(BiTNode T) { Console.Write(T.data+" "); }
测试的main函数如下 public const int MaxSize = 50; static void Main(string[] args) { BiTNode T = new BiTNode() ; int x=0; //创建二叉树 T.data = 1; T.lchild= new BiTNode(); T.lchild.data = 2; T.rchild = new BiTNode(); T.rchild.data = 3; T.lchild.rchild=new BiTNode(); T.lchild.rchild.data = 4; T.lchild.rchild.lchild= new BiTNode(); T.lchild.rchild.lchild.data = 6; T.rchild.rchild = new BiTNode(); T.rchild.rchild.data = 5; Console.WriteLine(“先序遍历的值:”); PreOrder(T); Console.WriteLine(); Console.WriteLine(“中序遍历的值:”); InOrder(T); Console.WriteLine(); Console.WriteLine(“后序遍历的值:”); PostOrder(T); Console.WriteLine(); Console.WriteLine(“非递归中序遍历的值:”); InOrder2(T); Console.WriteLine(); Console.WriteLine(“层次遍历的值:”); LevelOrder(T); Console.ReadLine();
}