用顺序结构实现对二叉树的三种遍历方式

news/2025/2/25 23:07:14
#include<stdio.h>
int a[20],n;
//创建二叉树
void creat(int b)
{
	int i;
	for(i=1;i<=b;i++)
		a[i]=i;
}
//先序遍历
void xianxu(int a)
{
	if(a<=n)
	{
		printf("%d ",a);//三种遍历都是采用的递归的思想。
		xianxu(2*a);//当根节点输出之后,就找出根节点所连接的左子树,递归调用寻找左子树并输出
		xianxu(2*a+1);//当左子树找完之后就往回走,寻找右子树并输出
	}//下面的都依次同理
}
//中序遍历
void zhongxu(int a)
{
	if(a<=n)
	{
		zhongxu(2*a);
		printf("%d ",a);
		zhongxu(2*a+1);
	}
}
//后序遍历
void houxu(int a)
{
	if(a<=n)
	{
		houxu(2*a);
		houxu(2*a+1);
		printf("%d ",a);
	}
}
int main()
{
	int i,j,sum;
	while(1)
	{
		printf("输入1:创建二叉树\n");
		printf("输入2:输出二叉树的先序遍历\n");
		printf("输入3:输出二叉树的中序遍历\n");
		printf("输入4:输出二叉树的后序遍历\n");
		scanf("%d",&sum);
		switch(sum)
		{
			case 1:
				printf("请输入要创建的二叉树的结点数\n");
				scanf("%d",&n);
				creat(n);
				break;
			case 2:
				xianxu(1);
				printf("\n");
				break;
			case 3:
				zhongxu(1);
				printf("\n");
				break;
			case 4:
				houxu(1);
				printf("\n");
				break;
		}
	}
	return 0;
}

http://www.niftyadmin.cn/n/709929.html

相关文章

如何判断Oracle DB是归档还是非归档模式,如何切换

查看oracle日志模式&#xff1a;archive log list修改oracle日志模式&#xff1a; 1&#xff0c;关闭数据库&#xff1a;shutdown immediate; 2&#xff0c;启动数据库实例到mount状态&#xff1a;startup mount; 3&#xff0c;切换数据库日志模式&#xff1a; alter database …

21 谁是老二?

21 谁是老二&#xff1f; 作者: Turbo时间限制: 1S章节: 一维数组 问题描述 : 一维数组中存储不超过100个整型数据&#xff0c;请找出其中第二大的元素&#xff0c;输出这些元素的值以及它们的下标。 注意&#xff0c;由于元素值可能相同&#xff0c;因此具有最大值的元素个…

DijKstra算法——单源最短路径的理解

/*单元最短路径&#xff0c;这个算法的思想就是每次先找到离原点最近的点&#xff0c;然后以这个点为基础扩展&#xff0c; 然后比较原点到扩展点的距离与原点到最点的距离加上最近点的距离到扩展点的距离&#xff0c; 如果大于的话就需要跟新原来dis中的距离*/ #include<st…

【工具使用系列】关于 MATLAB 过程控制,你需要知道的事

2019独角兽企业重金招聘Python工程师标准>>> 如何进行过程控制 什么是过程控制 转载于:https://my.oschina.net/shamrocks/blog/1618301

20 整除的尾数

20 整除的尾数 作者: Turbo时间限制: 1S章节: 一维数组 问题描述 : 一个整数&#xff0c;只知道前几位为a&#xff0c;不知道末二位&#xff0c;被另一个整数b除尽了(即没有余数)&#xff0c;那么该数的末二位该是什么呢&#xff1f; 程序已完成主体框架,请完成以下函数get…

oracle重做日志文件硬盘坏掉解决方法

rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志&#xff0c;例如/u01/app/oracle/oradata/ORCL下的所有后缀为log的文件 sqlplus / as sysdba alter system switch logfile;    因为没有重做日志文件&#xff0c;会一直处于等待装填&…

对vector容器存储的理解

vector 容器中如果用尾插的方法放入vector 容器中&#xff0c;其实vector就相当于一个二维数组&#xff0c;当插入第一个输得时候就放在了vector 二维数组中的第一行&#xff0c;接下来每次输入一个就放在了下一行。 #include<vector>//定义vector容器头文件 #include&l…

38 求反数字字符串

38 求反数字字符串 作者: 张志寿时间限制: 1S章节: 字符串 问题描述 : 编写一个程序&#xff0c;将输入的数字串反转过来并输出。如&#xff1a;输入123&#xff0c;输出321。 输入说明 : 你的数据需要从标准输入设备&#xff08;通常为键盘&#xff09;中读入多组测试数据…