鱼C论坛

 找回密码
 立即注册
查看: 4690|回复: 10

[技术交流] 二叉树的创建及先序遍历中序遍历后序遍历

[复制链接]
发表于 2013-4-25 16:58:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
无标题.png bittree.h
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define OK 1
  4. typedef char TElemType;
  5. typedef int Status;

  6. typedef struct BiTNode{
  7.         TElemType data;
  8.         struct BiTNode *lchild,*rchild;
  9. }BiTNode,*BiTree;
  10. Status CreatBitTree(BiTree &T)
  11. {
  12.         TElemType ch;
  13.         scanf("%c",&ch);
  14.         if (ch=='#')
  15.                 T=NULL;
  16.         else {
  17.                 T=(BiTree)malloc(sizeof(BiTNode));
  18.                 T->data=ch;
  19.                 CreatBitTree(T->lchild);
  20.                 CreatBitTree(T->rchild);
  21.         }
  22.         return OK;
  23. }

  24. Status PreOrderTraverse(BiTree T,Status (* Visit)(TElemType e))
  25. {
  26.         if (T)
  27.         {
  28.                 Visit(T->data);
  29.                 PreOrderTraverse(T->lchild,Visit);
  30.                 PreOrderTraverse(T->rchild,Visit);
  31.         }
  32.         return OK;
  33. }

  34. Status InOrderTraverse(BiTree T,Status (* Visit)(TElemType e))
  35. {
  36.         if (T)
  37.         {        
  38.                 InOrderTraverse(T->lchild,Visit);
  39.                 Visit(T->data);
  40.                 InOrderTraverse(T->rchild,Visit);
  41.         }
  42.         return OK;
  43. }

  44. Status PostOrderTraverse(BiTree T,Status (* Visit)(TElemType e))
  45. {
  46.         if (T)
  47.         {
  48.                 PostOrderTraverse(T->lchild,Visit);
  49.                 PostOrderTraverse(T->rchild,Visit);
  50.                 Visit(T->data);
  51.         }
  52.         return OK;
  53. }
  54. Status PrintElem(TElemType e)//输出函数,这样写的目的很简单,如果要输出其他类型只需要修改这个函数即可
  55. {
  56.         printf("%c",e);
  57.         return OK;
  58. }
复制代码

bittree.cpp
  1. #include<bittree.h>int main()
  2. {
  3.         BiTree tree;
  4.         Status (* Visit)(TElemType e);
  5.         Visit=PrintElem;
  6.         CreatBitTree(tree);
  7.         PreOrderTraverse(tree,Visit);//先序遍历
  8.         printf("\n");
  9.         InOrderTraverse(tree,Visit);//中序遍历
  10.         printf("\n");
  11.         PostOrderTraverse(tree,Visit);//后序遍历
  12.         printf("\n");
  13.         getchar();
  14.         getchar();
  15.         return 0;
  16. }
复制代码

测试数据:
/*
ABC##DE#G##F###
ABCDEGF
CBEGDFA
CGEFDBA
*/

二叉树的创建和遍历

自己写的,不太喜欢文字,对于看不懂的可以回复,我会第一时间回答你的问题!
这个很基础,对于需要学习二叉树的人来说,入门很好!

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
怡静 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-7-2 17:55:42 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2013-7-3 16:32:52 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2013-7-3 19:48:47 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2013-7-4 18:56:00 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2013-7-13 01:46:15 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2013-7-15 00:29:43 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2013-7-15 08:51:24 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2017-4-17 20:57:17 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2020-12-8 19:20:08 From FishC Mobile | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2020-12-22 22:23:57 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 08:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表