#数据结构 二叉树的建立及先中后序遍历完整C语言代码

二叉树的先中后序遍历

  • 二叉树的建立
  • 先序遍历
  • 中序遍历
  • 后序遍历
  • 程序结果

二叉树的建立

我们知道,建立一个二叉树,可以写出它的先序遍历,后序遍历,中序遍历。本文根据先序序列建立一个二叉树,以字符#表示空结点。先序序列的二叉树如下图所示。(ABD##E##CF###)
#数据结构 二叉树的建立及先中后序遍历完整C语言代码_第1张图片
比如我们知道这样的一个二叉树
想要建立这个二叉树二叉树,我们就要依次从键盘输入 ABD##E##CF###。
这样,我们就建立好了一个二叉树,接下来就是输出该二叉树,分别通过先序遍历,中序遍历,后序遍历输出该二叉树。

先序遍历

//先序遍历
void Preorder(Bintree *bt)
{
   if (*bt != NULL)
   {
       printf("%c", ((*bt)->data));
       Preorder(&(*bt)->lchild);//先序遍历左子树
       Preorder(&(*bt)->rchild);//先序遍历右子树
   }
}

中序遍历

//中序遍历
void Inorder(Bintree *bt)
{
    if (*bt != NULL)
	{
        Inorder(&(*bt)->lchild);//中序遍历左子树
        printf("%c", (*bt)->data);
        Inorder(&(*bt)->rchild);//中序遍历右子树
    }
}
 

后序遍历

//后序遍历
void Posorder(Bintree *bt)
{
      if (*bt != NULL)
	  {
          Posorder(&(*bt)->lchild);//后序遍历左子树
          Posorder(&(*bt)->rchild);//后序遍历右子树
          printf("%c", (*bt)->data);
      }
}

来看完整代码

#include 
#include  
typedef struct Binnode//结构定义
{
    char data;//数据域
    struct Binnode *lchild;//左孩子
    struct Binnode *rchild;//右孩子
}Binnode, *Bintree;

//创建二叉树
void Create_Bintree(Bintree *bt)
{
     char ch; 
     if((ch = getchar()) == '#') 
	 {
		*bt = NULL;//空子树
     } 
	 else 
	 {
         *bt = (Binnode *)malloc(sizeof(Binnode));//开辟空间
         (*bt)->data = ch;
         Create_Bintree(&(*bt)->lchild);//创建左子树
         Create_Bintree(&(*bt)->rchild);//创建右子树
     }
}

//先序遍历
void Preorder(Bintree *bt)
{
   if (*bt != NULL)
   {
       printf("%c", ((*bt)->data));
       Preorder(&(*bt)->lchild);//先序遍历左子树
       Preorder(&(*bt)->rchild);//先序遍历右子树
   }
}

//中序遍历
void Inorder(Bintree *bt)
{
    if (*bt != NULL)
	{
        Inorder(&(*bt)->lchild);//中序遍历左子树
        printf("%c", (*bt)->data);
        Inorder(&(*bt)->rchild);//中序遍历右子树
    }
}

//后序遍历
void Posorder(Bintree *bt)
{
      if (*bt != NULL)
	  {
          Posorder(&(*bt)->lchild);//后序遍历左子树
          Posorder(&(*bt)->rchild);//后序遍历右子树
          printf("%c", (*bt)->data);
      }
}

void main()
{
      Bintree T;
		printf("请输入一个二叉树:\n");
      Create_Bintree(&T);
		printf("Tree Create OK!\n");
		printf("先序遍历:\n");
      Preorder(&T);
		printf("\n中序遍历:\n");
      Inorder(&T);
		printf("\n后序遍历:\n");
      Posorder(&T);
		printf("\n");
 }

程序结果

#数据结构 二叉树的建立及先中后序遍历完整C语言代码_第2张图片

你可能感兴趣的:(C语言,数据结构,二叉树,数据结构,c语言)