输入二叉树先序序列,输出先序,中序,后序序列

简介: 输入二叉树先序序列,输出先序,中序,后序序列


/*====================================================
程序功能:输入二叉树先序序列,输出先序,中序,后序序列
作者:令狐荣豪
完成日期:2019/5/19
=====================================================*/
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
  char data;//定义二叉链表的结构体
  struct BiTNode *lchild, *rchild;
}Bitree;
Bitree *CreateBtree_DLR(Bitree* root);//以先序遍历二叉树
void PreOrder(Bitree* T);//先序遍历二叉树
void InOrder(Bitree *T);//中序遍历二叉树
void PostOrder(Bitree *T);//后序遍历二叉树
/*================================
函数功能:构建二叉树
=================================*/
Bitree* CreateBtree_DLR(Bitree* root)
{
  char ch;
  scanf("%c", &ch);
  if (ch == '@')
    root = NULL;
  else
  {
    root = (Bitree*)malloc(sizeof(Bitree));
    root->data = ch;
    root->lchild = CreateBtree_DLR(root->lchild);//构造左子树
    root->rchild = CreateBtree_DLR(root->rchild);//构造右子树
  }
  return (root);
}
/*==================================
函数功能:先序遍历递归算法
函数输入:树的根结点
===================================*/
void PreOrder(Bitree *T)
{
  if (T != NULL)
  {
    printf("%c", T->data);
    PreOrder(T->lchild);
    PreOrder(T->rchild);
  }
}
/*==================================
函数功能:中序遍历
===================================*/
void InOrder(Bitree *T)
{
  if (T != NULL)
  {
    InOrder(T->lchild);
    printf("%c", T->data);
    InOrder(T->rchild);
  }
}
/*=================================
函数功能:后序遍历
==================================*/
void PostOrder(Bitree *T)
{
  if (T != NULL)
  {
    PostOrder(T->lchild);
    PostOrder(T->rchild);
    printf("%c",T->data);
  }
}
int main()
{
  Bitree *T = NULL;
  printf("输入二叉树的先序遍历结点,建立二叉树。(子树为空时输入@)\n");
  T = CreateBtree_DLR(T);
  printf("\n先序遍历结果:\n");
  PreOrder(T);
  printf("\n中序遍历结果:\n");
  InOrder(T);
  printf("\n后序遍历的结果:\n");
  PostOrder(T);
  return 0;
}


目录
相关文章
排序二叉树的创建及先序、中序、后序输出二叉树
排序二叉树的创建及先序、中序、后序输出二叉树
87 1
|
3月前
|
存储 索引 Python
从中序与后序遍历序列构造二叉树
【10月更文挑战第13天】这段内容介绍了一种基于中序和后序遍历序列构建二叉树的方法。通过识别后序遍历中的根节点,并利用中序遍历划分左右子树,进而递归构建整棵树。文中提供了具体示例及Python代码实现,并分析了该方法的时间与空间复杂度。
120 0
21_从中序与后序遍历序列构造二叉树
21_从中序与后序遍历序列构造二叉树
|
C++ 索引
从前序与中序遍历序列构造二叉树(C++实现)
从前序与中序遍历序列构造二叉树(C++实现)
105 1
|
C++ 索引
从中序与后序遍历序列构造二叉树(C++实现)
从中序与后序遍历序列构造二叉树(C++实现)
88 1
【LeetCode】-- 105. 从前序与中序遍历序列构造二叉树
【LeetCode】-- 105. 从前序与中序遍历序列构造二叉树
149 0
【LeetCode】-- 105. 从前序与中序遍历序列构造二叉树
先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数
先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数
639 0
先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数

热门文章

最新文章