作为一个立志要好好学习的蒟蒻,搜集了好多关于数据结构的资料。对于树的遍历这点,看网上那帮大佬的指针做法,不禁瑟瑟发抖。其实对于指针的做法,我们可以用数组来模拟指针,效率也是很快。
二叉树的三种深搜遍历分为先序遍历、中序遍历和后序遍历。
先序遍历:先遍历根节点,然后左子树,最后右子树【根左右】
中序遍历:先遍历左子树,然后根节点,最后右子树【左根右】
后序遍历:先遍历左子树,然后右子树,最后根节点【左右根】
如下图qwq
所以说对于这个图呢,先序遍历就是:A->B->D->H->I->E->C->F->G
中序遍历就是:H->D->I->B->E->A->F->C->G->
后序遍历就是:H->I->D->E->B->F->G->C->A
所以对于先序中序后序遍历的方式就很显然了,其实就是遍历顺序的不同
下面附代码示例(以先序遍历的输入为准)我们在这里规定Z为空,即没有这个节点
#include<iostream>
using namespace std;
const char inf='Z';
struct NODE{
char a;//结点的内容
int pr;//父结点的数组下标位置 ;
int l;//左子树下标位置;
int r;//右子树下标位置;
}node[100];
void input (int m)//由于是先序遍历输入,所以需要递归输入;
{
cin>>node[m]