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; 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章