输入二叉树先序序列,输出先序,中序,后序序列_输入一个二叉树的先序序列-程序员宅基地

技术标签: 《算法数据结构》系列  二叉树  

/*====================================================
程序功能:输入二叉树先序序列,输出先序,中序,后序序列
作者:令狐荣豪
完成日期: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;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43891901/article/details/90582398

智能推荐

php 中文字符串截取,PHP中文字符串截取函数一例-程序员宅基地

文章浏览阅读179次。中文字符串的截取如果处理不好会很麻烦。以下是一段PHP中文字符串截取函数代码。&_php 中文截取

记一次mariadb安装后无法启动的解决方法_mariadb.service: main process exited, code=exited,-程序员宅基地

文章浏览阅读3.6k次。配置mariadb.service后,通过systemctl start mariadb,提示异常。操作系统:CentOS Linux release 7.6.1810 (Core)1、检查/usr/local/mysql/bin/mariadbd 权限。执行 journalctl -xe 后提示 没有权限。发现/opt/ 下 soft 目录没有其他人的权限。若提示没有mysql,检查下mysql环境变量。给 /opt/soft添加 其他人权限。查看mariadb的服务状态已正常。mariadb安装目录。_mariadb.service: main process exited, code=exited, status=1/failure

时间序列预测 | Matlab基于麻雀算法(SSA)优化门控循环单元(SSA-GRU)的时间序列预测-程序员宅基地

文章浏览阅读27次。时间序列预测 | Matlab基于麻雀算法(SSA)优化门控循环单元(SSA-GRU)的时间序列预测

CWDM、DWDM、FWDM、MWDM、LWDM概述讲解_tdm cwdm lwdm mwdm-程序员宅基地

文章浏览阅读274次。与CWDM类似,它也是一种基于波分复用技术的光纤传输技术,但它的通道数更多、信道间隔更小,可以实现更高的传输容量。它是一种基于波分复用技术的光纤传输技术,可将来自不同来源的多个光信号,按照不同的波长,通过同一根光纤进行传输。顾名思义,它是一种基于滤波器的波分复用技术,通过精细的滤波器设计,将不同波长的光信号分离出来进行传输。它与CWDM和DWDM类似,但波长范围更偏向于长波长光信号的传输,适用于某些特定的光纤传输应用场景。_tdm cwdm lwdm mwdm

线上打包和本地打包的区别_vue项目 linux打包和本地打包有区别嘛-程序员宅基地

文章浏览阅读3.3k次。本地打的包对依赖的jar包是从本地仓库中取,所以如果多模块项目中自己写的被依赖的模块要保证私服中始终是最新的代码,及时安装到本地。线上使用jenkins打的包是从私服上拉代码,所以要保证本地修改在打包前一定要提交到私服上。jenkins打的包和本地不一样是,考虑以下方面,看看服务器时间是否不一样,或者在jenkins的代码拉取是加上@head。..._vue项目 linux打包和本地打包有区别嘛

EOS的BFT与DPOS-程序员宅基地

文章浏览阅读80次。EOS的共识机制是DPoS(Delegated Proof of Stake),而不是BFT。EOS采用DPoS的设计,它侧重于代币持有者的投票,代表人轮流生成区块,而不同于传统的BFT机制。虽然EOS的DPoS也旨在确保网络的安全性和一致性,但它的工作方式和设计思路与BFT不同。BFT共识机制是一种用于分布式系统的共识算法,可以确保在存在故障或恶意行为的情况下系统仍能达成一致的决策。总之,EOS的共识机制是DPoS,而不是传统的BFT,这两者在设计和工作原理上有很大的不同。

随便推点

使用linux的工具keepalived实现ip虚拟,监控端口状态,实现数据库故障切换_虚拟ip管理工具-程序员宅基地

文章浏览阅读1.2k次。一、keepalived工具简介1.Keepalived高可用软件Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。keepalived软件主要是通过VRRP协议实现高可用功能的..._虚拟ip管理工具

VUE 富文本编辑器 tinymce - - - - 对懒人 非常友好 一看就懂_vue富文本编辑器-程序员宅基地

文章浏览阅读9.8k次,点赞19次,收藏89次。vue 富文本 编辑器 tinymce 对懒人 及其友好,五分钟使用 功能齐全,可自定义性高,尤其是美观_vue富文本编辑器

snownlp:自定义训练样本与模型保存_snownlp如何加载训练模型-程序员宅基地

文章浏览阅读1.5w次,点赞32次,收藏193次。本文介绍了snownlp包的情感分析模型训练、保存以及如何使用自己训练的模型,从文件结构、源码设置等角度进行了描述。按照此方法,可以轻松玩转snownlp的情感分析。_snownlp如何加载训练模型

python 通用文件_python 创建通用文档-程序员宅基地

文章浏览阅读165次。from numpy.random import randnimport numpy as npnp.random.seed(123)import osimport matplotlib.pyplot as pltimport pandas as pdplt.rc('figure', figsize=(10, 6))np.set_printoptions(precision=4)pd.option..._python 创建通用文档

c语言 求特殊方程的正整数解_求特殊方程的正整数解c语言-程序员宅基地

文章浏览阅读3.3k次,点赞4次,收藏11次。*题目:  要求对任意给定的正整数 N,求方程 X2+Y2=NX2+Y2=NX2+Y2=N 的全部正整数解。输入格式:  输入在一行中给出正整数 N(≤10000)。输出格式:  输出方程 X2+Y2=NX2+Y2=NX2+Y2=N 的全部正整数解,其中 X≤Y。每组解占 1 行,两数字间以 1 空格分隔,按 X 的递增顺序输出。如果没有解,则输出 No Solution..._求特殊方程的正整数解c语言

2023年3月青少年C/C++软件编程(五级)等级考试试卷及答案解析_青少年软件编程c++五级真题-程序员宅基地

文章浏览阅读454次。2023年3月青少年C/C++软件编程(五级)等级考试试卷及答案解析_青少年软件编程c++五级真题

推荐文章

热门文章

相关标签