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

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


/*====================================================
程序功能:输入二叉树先序序列,输出先序,中序,后序序列
作者:令狐荣豪
完成日期: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;
}


目录
相关文章
|
7月前
|
Java C++ 索引
leetcode-106:从中序与后序遍历序列构造二叉树
leetcode-106:从中序与后序遍历序列构造二叉树
50 0
|
2月前
|
存储 索引 Python
从中序与后序遍历序列构造二叉树
【10月更文挑战第13天】这段内容介绍了一种基于中序和后序遍历序列构建二叉树的方法。通过识别后序遍历中的根节点,并利用中序遍历划分左右子树,进而递归构建整棵树。文中提供了具体示例及Python代码实现,并分析了该方法的时间与空间复杂度。
21_从中序与后序遍历序列构造二叉树
21_从中序与后序遍历序列构造二叉树
|
C++ 索引
从中序与后序遍历序列构造二叉树(C++实现)
从中序与后序遍历序列构造二叉树(C++实现)
84 1
|
C++ 索引
从前序与中序遍历序列构造二叉树(C++实现)
从前序与中序遍历序列构造二叉树(C++实现)
96 1
|
7月前
|
C++ 索引 Python
leetcode-105:从前序与中序遍历序列构造二叉树
leetcode-105:从前序与中序遍历序列构造二叉树
48 0
leetcode 106 从中序和后续遍历序列构造二叉树
leetcode 106 从中序和后续遍历序列构造二叉树
83 0
leetcode 106 从中序和后续遍历序列构造二叉树
|
算法 前端开发 程序员
二叉树的后序遍历序列
二叉树的后序遍历序列
二叉树的后序遍历序列