二叉树的创建与遍历

来源:互联网 发布:西安聚航网络 编辑:程序博客网 时间:2024/06/09 15:26

这里写图片描述

//先序遍历二叉树
pre_order_travel(bitree T)
{
if(T)
{
visit(T->data);//访问根节点
pre_order_travel(T->lchild);//遍历左子树
pre_order_travel(T->rchild);//遍历右子树
}
}
//中序遍历二叉树
in_order_travel(bitree T)
{
if(T)
{
in_order_travel(T->lchild);
visit(T->data);
in_order_travel(T->rchild);
}
}
//后序遍历二叉树
post_order_travel(bitree T)
{
if(T)
{
post_order_travel(T->lchild);
post_order_travel(T->rchild);
visit(T->data);
}
}
“`

例题

这里写图片描述

创建上图所示的二叉树,并求出D所在的层数

示范代码

#include<cstdio>#include<malloc.h>typedef struct Node{    char data;    struct Node *lchild,*rchild;}binode,*bitree;//先序创建二叉树void createbitree(bitree *T){    char c;    scanf("%c",&c);    if(c==' ')*T=NULL;    else    {        *T=(bitree)malloc(sizeof(binode));        (*T)->data=c;        createbitree(&((*T)->lchild));        createbitree(&((*T)->rchild));    }}void visit(char c,int level){    if(c=='D')        printf("D is at level %d in the bitree\n",level);}void pre_order_travel(bitree T,int level){    if(T)    {        visit(T->data,level);        pre_order_travel(T->lchild,level+1);        pre_order_travel(T->rchild,level+1);    }}int main(){    bitree T=NULL;    createbitree(&T);    pre_order_travel(T,1);    return 0;}