二叉树遍历

简介: 二叉树遍历
22332
http://6520874.blog.163.com/blog/static/72582719201111711719270/
/**********************************************
Author:tmw
date:2018-2-13
**********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAXSIZE 100
/**二叉树数据结构定义**/
typedef struct BiTreeNode
{
    char data;
    struct BiTreeNode *left;
    struct BiTreeNode *right;
}BiTreeNode,*BiTree;
/**二叉树的建立--按照先序方式建立--插入**/
void CreateBiTree(BiTree *T)
{
    char val;
    scanf("%c",&val);
    if(val == '@')
        *T = NULL;  //null表示为空枝
    else
    {
        *T = (BiTree)malloc(sizeof(BiTreeNode));
        (*T)->data = val;
        CreateBiTree(&(*T)->left);
        CreateBiTree(&(*T)->right);
    }
}
/**先序遍历  根左右**/
void PreOrderTravel(BiTree T)
{
    if(T==NULL)
        return;
    printf("%c ",T->data);
    PreOrderTravel(T->left);
    PreOrderTravel(T->right);
}
/**中序遍历 左根右**/
void InOrderTravel(BiTree T)
{
    if(T==NULL)
        return;
    InOrderTravel(T->left);
    printf("%c ",T->data);
    InOrderTravel(T->right);
}
/**后序遍历 左右根**/
void TailOrderTravel(BiTree T)
{
    if(T==NULL)
        return;
    TailOrderTravel(T->left);
    TailOrderTravel(T->right);
    printf("%c ",T->data);
}
int main()
{
    printf("测试代码\n");
    BiTree T;
    T = (BiTree)malloc(sizeof(BiTreeNode));
    printf("请给二叉树按照先序方式依次输入结点的值(空结点为#):\n");
    CreateBiTree(&T);
    printf("先序方式遍历结果:\n");
    PreOrderTravel(T);
    printf("\n");
    printf("中序方式遍历结果:\n");
    InOrderTravel(T);
    printf("\n");
    printf("后序方式遍历结果:\n");
    TailOrderTravel(T);
    printf("\n");
    return 0;
}

d93fe0c0d5989eb6f1aff0e0458c5ce5.jpg


相关文章
|
Java Maven
Maven高级-分模块开发和设计及依赖管理
Maven高级-分模块开发和设计及依赖管理
150 0
|
11月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
155 1
|
JavaScript 前端开发
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
这篇文章主要讨论了axios的使用、原理以及源码分析。 文章中首先回顾了axios的基本用法,包括发送请求、请求拦截器和响应拦截器的使用,以及如何取消请求。接着,作者实现了一个简易版的axios,包括构造函数、请求方法、拦截器的实现等。最后,文章对axios的源码进行了分析,包括目录结构、核心文件axios.js的内容,以及axios实例化过程中的配置合并、拦截器的使用等。
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
|
8月前
|
消息中间件 NoSQL 架构师
招行面试:亿级秒杀,超卖问题+少卖问题,如何解决?(图解+秒懂+史上最全)
45岁资深架构师尼恩在读者交流群中分享了如何系统化解决高并发下的库存抢购超卖少买问题,特别是针对一线互联网企业的面试题。文章详细解析了秒杀系统的四个阶段(扣库预扣、库存扣减、支付回调、库存补偿),并通过Redis分布式锁和Java代码示例展示了如何防止超卖。此外,还介绍了使用RocketMQ延迟消息和xxl-job定时任务解决少卖问题的方法。尼恩强调,掌握这些技术不仅能提升面试表现,还能增强实际项目中的高并发处理能力。相关答案已收入《尼恩Java面试宝典PDF》V175版本,供后续参考。
|
11月前
|
开发框架 .NET API
实现数据同步的webapi接口
【10月更文挑战第10天】本文介绍了一个在ASP.NET Core中使用C#实现数据同步的Web API接口示例。首先定义了用户数据模型和Entity Framework Core数据库上下文,然后创建了一个控制器来处理客户端的数据同步请求:通过清空现有数据并添加新数据实现同步。注意实际应用需考虑更多细节如错误处理等。
277 3
|
11月前
|
Oracle Java 关系型数据库
在 Debian 12 上安装 Java 21
在 Debian 12 上安装 Java 21
|
11月前
|
Web App开发 网络协议 API
基于C#编写一个远程桌面应用
基于C#编写一个远程桌面应用
409 0
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十四)(1)
MySQL8 中文参考(二十四)
127 2
|
Oracle 关系型数据库 分布式数据库
PolarDB 数据备份与恢复策略
【8月更文第27天】PolarDB 是阿里云推出的一款高性能、高可用的关系型数据库服务,支持 MySQL、PostgreSQL 和 Oracle 数据库引擎。对于任何数据库系统来说,数据的安全性和完整性至关重要。本文将详细介绍 PolarDB 的备份机制,并提供数据恢复的最佳实践。
737 0
【专栏】子网划分在现代网络工程中的重要性,包括管理网络、增强安全性和优化IP地址使用
【4月更文挑战第28天】本文介绍了子网划分在现代网络工程中的重要性,包括管理网络、增强安全性和优化IP地址使用。文章阐述了子网划分的原理,如通过子网掩码划分广播域以减少网络风暴。接着,详细说明了子网划分的方法,涉及需求分析、选择子网掩码、计算子网及广播地址等步骤,并提到了VLSM和CIDR等高效技术。最后,通过实例展示了如何进行子网划分,强调实践对于掌握这项技能的关键作用。学习子网划分能提升网络管理和设计能力。
416 4

热门文章

最新文章