数据结构二叉树遍历

来源:互联网 发布:原来你是这样的网络语 编辑:程序博客网 时间:2024/05/26 22:55

今天来介绍下二叉树的4种遍历方式,如果对二叉树不熟悉的话,请先去本系列二叉树的介绍中先学习。

 

遍历:单链表的遍历是指从第一个结点开始(下标为0的结点),按照某种次序依次访问每一个结点。
           二叉树的遍历是指从根结点开始,按照某种次序依次访问二叉树中的所有结点。

 

OK,下面就分别介绍前序遍历中序遍历后序遍历层次遍历

 

代码:

[cpp] view plain copy
  1. void pre_order_traversal(BTreeNode* root)  
  2. {  
  3.     if(NULL != root)  
  4.     {  
  5.         printf("%c, ", ((Node*)root)->v);  
  6.           
  7.         pre_order_traversal(root->left);  
  8.         pre_order_traversal(root->right);  
  9.     }  
  10. }  


 

 

代码:

[cpp] view plain copy
  1. void middle_order_traversal(BTreeNode* root)  
  2. {  
  3.     if(NULL != root)  
  4.     {  
  5.         middle_order_traversal(root->left);  
  6.           
  7.         printf("%c, ", ((Node*)root)->v);  
  8.           
  9.         middle_order_traversal(root->right);  
  10.     }  
  11. }  


 

 

代码:

[cpp] view plain copy
  1. void post_order_traversal(BTreeNode* root)  
  2. {  
  3.     if(NULL != root)  
  4.     {  
  5.         post_order_traversal(root->left);  
  6.         post_order_traversal(root->right);  
  7.           
  8.         printf("%c, ", ((Node*)root)->v);  
  9.     }  
  10. }  


 

代码:

[cpp] view plain copy
  1. void level_order_traversal(BTreeNode* root)  
  2. {  
  3.     if(NULL != root)  
  4.     {  
  5.         LinkQueue* queue = LinkQueue_Create();  
  6.           
  7.         if(NULL != queue)  
  8.         {  
  9.             LinkQueue_Append(queue, root);  
  10.               
  11.             while(0 < LinkQueue_Length(queue))  
  12.             {  
  13.                 Node* node = (Node*)LinkQueue_Retrieve(queue);  
  14.                   
  15.                 printf("%c, ", node->v);  
  16.                   
  17.                 LinkQueue_Append(queue, node->header.left);  
  18.                 LinkQueue_Append(queue, node->header.right);  
  19.             }  
  20.         }  
  21.           
  22.         LinkQueue_Destroy(queue);  
  23.     }  
  24. }  

原创粉丝点击