大家好,这是小弟的第一篇博客,开篇先贴出自己实现的二叉树算法(完整代码和注释),本人亲自测试过,如果亲发现任何问题,可以拍砖,呵呵。。。贴源码:

  1 #include <stdio.h>
  2 #include <malloc.h>  // malloc();
  3 #include <stdlib.h> //exit();
  4 
  5 //定义二叉树的链式存储结构
  6 typedef struct BiTNode
  7 {
  8  char data;
  9  BiTNode *lchild,*rchild;
 10 }  *BiTree;
 11 
 12 //构造二叉树,输入例子:ABC  DE G  F   //截止3个空格,空格代表空树
 13 bool CreateBiTree(BiTree &T) 
 14 {
 15  char ch;
 16  scanf("%c",&ch);
 17  if (ch==' ') T = NULL;
 18  else
 19  {
 20   T = (BiTNode *)malloc(sizeof(BiTNode));
 21   if(!T) exit(-1);
 22   T->data = ch;
 23   CreateBiTree(T->lchild);
 24   CreateBiTree(T->rchild);
 25  }
 26  return true;
 27 }
 28 
 29 bool PrintValue(char data)
 30 {
 31  printf("%c",data);
 32 
 33  return true;
 34 }
 35 
 36 //先序遍历二叉树,Visit为指针函数,调用定义的函数
 37 bool PreOrderTraverse(BiTree &T,bool (* Visit)(char data))
 38 {
 39  if(T)
 40  {
 41   if(!Visit(T->data)) return false;
 42   PreOrderTraverse(T->lchild,Visit);
 43   PreOrderTraverse(T->rchild,Visit);
 44  }
 45  return true;
 46 }
 47 
 48 //中序遍历二叉树,Visit为指针函数,调用定义的函数
 49 bool InOrderTraverse(BiTree &T,bool (* Visit)(char data))
 50 {
 51  if(T)
 52  {
 53   InOrderTraverse(T->lchild,Visit);
 54   if(!Visit(T->data)) return false;
 55   InOrderTraverse(T->rchild,Visit); 
56 } 57 return true; 58 } 59 60 //后序遍历二叉树,Visit为指针函数,调用定义的函数 61 bool LastOrderTraverse(BiTree &T,bool (* Visit)(char data)) 62 { 63 if(T) 64 { 65 LastOrderTraverse(T->lchild,Visit); 66 LastOrderTraverse(T->rchild,Visit); 67 if (!Visit(T->data)) return false; 68 } 69 return true; 70 } 71 72 int main(void) 73 { 74 75 76 printf("请输入构造二叉树的数据域:\n"); 77 BiTree p; 78 CreateBiTree(p); 79 printf("采用先序遍历输出结果:\n"); 80 PreOrderTraverse(p,PrintValue); 81 printf("\n"); 82 83 printf("采用中序遍历输出结果:\n"); 84 InOrderTraverse(p,PrintValue); 85 printf("\n"); 86 87 printf("采用后序遍历输出结果:\n"); 88 LastOrderTraverse(p,PrintValue); 89 printf("\n"); 90 91 system("pause"); //控制台暂停 92 93 return 0; 94 } 95 // 输入例子:ABC DE G F //截止3个空格,空格代表空树 96 /* Output: 97 先序遍历:ABCDEGF 98 中序遍历:CBEGDFA 99 后序遍历:CGEFDBA 100 */

 

 

posted on 2012-12-31 19:38  Jason_shang  阅读(376)  评论(0)    收藏  举报