数据结构实验之——二叉树前中后递归和非递归遍历的实现

二叉树前中后递归和非递归遍历的实现

表述形式

在这里我在非递归方面前序遍历和中序遍历都提供了两种不同的算法,一种是我自己根据性质和原理写的还有一种就是比较普遍的算法,代码也已经测试过啦,有什么问题可以留言或者私信我,在这里声明一下二叉树的输入的形式,不是顺序输入噢,是按照根左右的形式,空子树用’ ^ ‘代替,会这种表达的小伙伴可以直接跳转到代码方面
举例:
二叉树形态:
在这里插入图片描述
(有点丑大家不要介意,嘿嘿)
根据根左右,并且空树就用‘^’符号代替的规则:
ABD^^^ CE^^ F^^^
说明:D后面三个’^‘,前面两个是说D既没有左子树,又没有右子树,所以有两个‘ ^ ’,而第三个’ ^ ‘就回到D前一个B,B没有右子树,所以就用一个’ ^ ',而后就到C啦,C是A的右子树嘛,所以就按规则办事喽,到后面就轮到E,E是叶子结点,那就和D一样啦,F也是。
这种方式在很多计算机系刚学习到数据结构应该都有涉及一点点吧,有问题欢迎私聊我哈在这里插入图片描述
再举个小栗子:
在这里插入图片描述
ABC ^^ DE ^^ FG ^^^^ (其中^表示空子树)

代码

二叉树非递归的三种遍历方法在这里是使用栈进行的,栈也是解决像类似这种非递归问题的常用方法之一。
需要完整代码的私聊我哈🍖🍖
部分代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <limits.h>

#define maxsize 20    //最大顶点个数 
#define INFINITY 0x3f3f3f3f  //最大值∞ 
#define OK 1;
#define ERROR -1;
#define Status int

typedef struct Node {
	char data;
	struct Node* LChild;
	struct Node* RChild;
}BiTNode, * BiTree;
typedef BiTree StackElementType;
typedef BiTree QueueElementType;
typedef struct stack {
	StackElementType elem[maxsize];
	int top;
}Stack;
typedef struct qu {
	QueueElementType ele[maxsize];
	int front;
	int rear;
}Queue;

测试结果

就用上面我们谈到的那棵树来做首个测验啦!
测试一:
在这里插入图片描述

测试二:
在这里插入图片描述

中序遍历我写了两个方法,但是上面的测试和代码只有一种,另一种目前好像有点问题,等我更正好了再回来修改,嘿嘿。
需要完整代码的私聊我~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是X大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值