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

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


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


目录
相关文章
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
264 4
|
6月前
|
SQL 数据管理 BI
数据库操作三基石:DDL、DML、DQL 技术入门指南
本文围绕数据库操作核心语言 DDL、DML、DQL 展开入门讲解。DDL 作为 “结构建筑师”,通过CREATE(建库 / 表)、ALTER(修改表)、DROP(删除)等命令定义数据库结构;DML 作为 “数据管理员”,以INSERT(插入)、UPDATE(更新)、DELETE(删除)操作数据表记录,需搭配WHERE条件避免误操作;DQL 作为 “数据检索师”,通过SELECT结合WHERE、ORDER BY、LIMIT等子句实现数据查询与统计。三者相辅相成,是数据库操作的基础,使用时需注意 DDL 的不可撤销性、DML 的条件约束及 DQL 的效率优化,为数据库学习与实践奠定基础。
|
人工智能 数据处理 语音技术
Pipecat实战:5步快速构建语音与AI整合项目,创建你的第一个多模态语音 AI 助手
Pipecat 是一个开源的 Python 框架,专注于构建语音和多模态对话代理,支持与多种 AI 服务集成,提供实时处理能力,适用于语音助手、企业服务等场景。
1209 23
Pipecat实战:5步快速构建语音与AI整合项目,创建你的第一个多模态语音 AI 助手
|
传感器 人工智能 数据可视化
数字孪生高效赋能,打造水利新质生产力
数字孪生水利运用云计算、大数据、AI、实景三维等技术,实现江河水库等水利工程的可视化展示与智能化模拟。通过三维可视化和实时数据映射,平台提供智能感知、分析、预测和预演功能,支持监测预警、调度优化及灾害预防,助力提升水利管理水平,保障水安全。
|
存储 开发者
递归比较的优缺点是什么?
【10月更文挑战第29天】递归比较是一种在处理复杂数据结构时常用的比较方法,尤其适用于对象和数组等引用类型数据的深度比较。
|
Java 数据库
实时数仓 Hologres产品使用合集之升级校验是否会影响holo的使用
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
传感器 编解码
倍福推出新一代 EtherCAT 模拟量端子模块
**倍福发布7款 EtherCAT 高密度模拟量端子模块,提升IP20 I/O性能,具备16位分辨率和广泛应用。新品包括混合I/O模块EL4374,支持±107%扩展量程及NAMUR标准,以及EL3072/74输入模块和EL4072/74/78输出模块,提供8通道和更高密度。**
|
机器学习/深度学习 算法 PyTorch
卷积神经网络的结构组成与解释(详细介绍)
卷积神经网络的结构组成与解释(详细介绍)
2452 0
|
Go API 区块链
Hyperledger Fabric相关概念介绍
在学习Hyperledger Fabric的过程中,初步对相关概念的了解。
803 0
Hyperledger Fabric相关概念介绍
|
机器学习/深度学习 传感器 算法
基于有限体积法 (FVM) 和 SIMPLE 算法求解平行板之间层流的速度、压力和温度附 MATLAB 代码
基于有限体积法 (FVM) 和 SIMPLE 算法求解平行板之间层流的速度、压力和温度附 MATLAB 代码