二叉树有四种遍历方法:
一、先序遍历。
先序指的是根节点最先遍历,然后遍历左子树和右子树,即:根 左 右的顺序。
我的先序遍历代码(下标存储左右子树):
#include<bits/stdc++.h>
using namespace std;
struct node
{
char root; //根
int left; //左
int right; //右
}tree[100];
void pot(int i) //Pre_Order_Travl 先序遍历
{
if(tree[i].root == 0) //如果是空树
return ; //结束
else //如果不是空树
{
printf("%c ", tree[i].root); //输出当前根
pot(tree[i].left); // 先序遍历左子树
pot(tree[i].right); //先序遍历右子树
}
}
int main()
{
//这里存储树,我没写
pot(1); //开始先序遍历,从根开始
return 0;
}
二、中序遍历。
中序指的是根节点在中间遍历,先遍历左子树,再遍历根,最后遍历右子树,即:左 根 右的顺序。
我的中序遍历代码(指针存储左右子树):
#include<bits/stdc++.h>
using namespace std;
struct node
{
char root; //根
node *left; //左
node *right; //右
}tree[100];
void mot(node *i) //中序遍历
{
if(i->left != NULL) //i->left等于*i.left
mot(i->left); // 中序遍历左子树
printf("%c ", i->root); //输出当前根
if(i->right != NULL) //i->right等于*i.right
mot(i->right); //中序遍历右子树
return ;
}
int main()
{
node *head; //head用来存储第一个节点的地址
//这里存储树
mot(head); //开始中序遍历,从根开始
return 0;
}
三、后序遍历。
后序指的是根节点最后遍历,先遍历左子树和右子树,即:左 右 根的顺序。这里,我就不展示代码了。
四、层序遍历。
一般来说,层序遍历不怎么考,但也要知道。
层序遍历是从上到下,从左到右,逐层遍历每个点,我也就不在这儿展开了。