一步一步学数据结构之1--n(二叉树遍历--四种方法--递归式)

来源:互联网 发布:卸载root权限软件 编辑:程序博客网 时间:2024/06/11 10:01

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

 

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

 

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

 

代码:

void pre_order_traversal(BTreeNode* root){if(NULL != root){printf("%c, ", ((Node*)root)->v);pre_order_traversal(root->left);pre_order_traversal(root->right);}}


 

 

代码:

void middle_order_traversal(BTreeNode* root){if(NULL != root){middle_order_traversal(root->left);printf("%c, ", ((Node*)root)->v);middle_order_traversal(root->right);}}


 

 

代码:

void post_order_traversal(BTreeNode* root){if(NULL != root){post_order_traversal(root->left);post_order_traversal(root->right);printf("%c, ", ((Node*)root)->v);}}


 

代码:

void level_order_traversal(BTreeNode* root){if(NULL != root){LinkQueue* queue = LinkQueue_Create();if(NULL != queue){LinkQueue_Append(queue, root);while(0 < LinkQueue_Length(queue)){Node* node = (Node*)LinkQueue_Retrieve(queue);printf("%c, ", node->v);LinkQueue_Append(queue, node->header.left);LinkQueue_Append(queue, node->header.right);}}LinkQueue_Destroy(queue);}}