二叉树的遍历有:前序遍历,中序遍历和后序遍历,区别只是根节点的访问顺序不同。
现使用C语言建立二叉树,并输出每个元素所在的层数,二叉树的结构如下:
代码如下:
#include <stdio.h>
#include <stdlib.h>
//按照前序遍历的方式创建一个二叉树,并遍历二叉树
typedef struct Bitnode
{
char data;
struct Bitnode *lchild,*rchild;
}Bitnode,*Bitree;
//创建 一个二叉树,约定用户遵照前序遍历的方式输入数据
void creatBitree(Bitree *T)
{
char c;
scanf("%c",&c);
if(' ' == c)
{
*T = NULL;
}
else
{
*T = (Bitnode *)malloc(sizeof(Bitnode));
(*T)->data = c;
// 取指针地址指向下一个
creatBitree(&(*T)->lchild);
creatBitree(&(*T)->rchild);
}
}
//访问二叉树节点的具体操作,你想干什么?
void visit(char m,int d)
{
printf("%c位于第%d层\n", m,d);
}
//遍历二叉树
void preodertraverse(Bitree T,int level)
{
if(T)
{
visit(T->data,level);
preodertraverse(T->lchild, level+1);
preodertraverse(T->rchild, level+1);
}
}
int main()
{
int level = 1;
Bitree T = NULL;
creatBitree(&T);
preodertraverse(T,level);
return 0;
}
按照前序遍历的方式则输入为:
”ABD CE F “