C语言实现二叉树的遍历

  
  
  
  
  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3.  
  4.  
  5. typedef  char   TElemType ; 
  6.  
  7. typedef struct TNode 
  8.     TElemType data; 
  9.     struct TNode *lchild , *rchild; 
  10. }BiTNode , *BiTree; 
  11.  
  12. int creatTree(BiTree *root) //递归创建二叉树 
  13. {    
  14.     char ch; 
  15.     scanf("%c" , &ch); 
  16.     if(ch == '#'
  17.     { 
  18.         (*root) = NULL; 
  19.     } 
  20.     else 
  21.     { 
  22.         if(!((*root) = (BiTNode *)malloc(sizeof(BiTNode)))) 
  23.         {    
  24.             printf("malloc error!\n"); 
  25.             return -1; 
  26.         } 
  27.         (*root)->data = ch; 
  28.         creatTree(&((*root)->lchild)); 
  29.         creatTree(&((*root)->rchild)); 
  30.     } 
  31.      
  32.     return 0; 
  33. void preOrderTraverse(BiTree tree)  //递归前序遍历 
  34. {    
  35.  
  36.     if(tree) 
  37.     {    
  38.         printf("%c", tree->data); 
  39.         preOrderTraverse(tree->lchild); 
  40.         preOrderTraverse(tree->rchild); 
  41.          
  42.     } 
  43.      
  44.     return ; 
  45. void inOrderTraverse(BiTree tree)   //递归中序遍历 
  46.     if(tree) 
  47.     { 
  48.         inOrderTraverse(tree->lchild); 
  49.         printf("%c", tree->data); 
  50.         inOrderTraverse(tree->rchild); 
  51.     } 
  52.     return ; 
  53.  
  54. void lastOrderTraverse(BiTree tree) //递归后序遍历 
  55.     if(tree) 
  56.     { 
  57.         lastOrderTraverse(tree->lchild); 
  58.         lastOrderTraverse(tree->rchild); 
  59.         printf("%c", tree->data); 
  60.     } 
  61.     return ; 
  62. int main(int argc , char **argv) 
  63.     BiTree tree ; 
  64.     creatTree(&tree); 
  65.     printf("\n*********先序遍历*********\n"); 
  66.     preOrderTraverse(tree); 
  67.     printf("\n*********中序遍历*********\n"); 
  68.     inOrderTraverse(tree); 
  69.     printf("\n*********后序遍历*********\n"); 
  70.     lastOrderTraverse(tree); 
  71.     printf("\n"); 
  72.      
  73.     return 0; 

 

你可能感兴趣的:(二叉树的遍历)