利用二叉树创建、遍历算法,编写程序,创建一颗二叉树,实现对二叉树的先序遍历、中序遍历和后序遍历。

#define NULL 0

#include <stdio.h>

#include <stdlib.h>

typedef struct btnode //定义二叉树的结点类型

{

char data; //二叉树中结点类型

struct btnode *lchild,*rchild; //左、右子树指针

}st;

st *create(st *p) //创建二叉树, 并返回根结点指针

{char ch;

if ((ch=getchar())=='#') p=NULL; //按先序方式输入二叉树中的结点序列, 并以'#'表示空结点

else

{

p=(st*) malloc(sizeof(st)); //创建根结点

p->data=ch;

p->lchild=create(p->lchild); //创建左子树

p->rchild=create(p->rchild); //创建右子树

}

return p;

}

void preorder(st *p) //对指针p指向的二叉树进行先根遍历

{

    if (p!=NULL){

printf("%2c",p->data); //访问根结点

preorder(p->lchild); //访问左子树

preorder(p->rchild); //访问右子树

}

}

void inorder(st *p)

{

    if(p!=NULL)

{

inorder(p->lchild); //访问左子树

printf("%2c",p->data); //访问根结点

inorder(p->rchild); //访问右子树

}

}

void lastorder(st *p)

{

if(p!=NULL)

{

lastorder(p->lchild); //访问左子树

lastorder(p->rchild); //访问右子树

printf("%2c",p->data); //访问根结点

}

}

void main()

{

st *s,*bt;

system("cls");

printf("请输入树结点字符串, 以 “#”结束:\n");

s = NULL;

bt=create(s); //调用create()创建二叉树

printf("各种遍历的结果是: \n\n");

printf("先序:");

preorder(bt); //先序遍历二叉树

printf("\n\n");

printf("中序:");

inorder(bt); //中序遍历二叉树

printf("\n\n");

printf("后序:");

lastorder(bt); //后序遍历二叉树

printf("\n\n");

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值