一步一步学数据结构之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);}}
- 一步一步学数据结构之1--n(二叉树遍历--四种方法--递归式)
- 一步一步学数据结构之1--n(二叉树遍历--非递归实现)
- 一步一步学数据结构之1--n(二叉树线索化--两种方法)
- 一步一步学数据结构之1--n(二叉树)
- 一步一步学数据结构之n--n(图遍历--深度优先遍历--递归实现)
- 一步一步学数据结构之n--n(图遍历--深度优先遍历--非递归实现)
- 一步一步学数据结构之1--n(通用树)
- 一步一步学数据结构之n--n(图遍历--广度优先遍历)
- 数据结构之 非递归方法先序遍历二叉树
- 数据结构之二叉树遍历(递归和非递归)
- 一步一步学数据结构之n--n(kruskal算法)
- 一步一步学数据结构之n--n(Prim算法)
- 数据结构——二叉树的四种遍历方式(非递归)
- 二叉树的四种遍历(递归、非递归)
- 数据结构之二叉树:先中后序遍历(递归)
- 数据结构之二叉树:先中后序遍历(非递归)
- 小菜一步一步学数据结构之(四)单链表
- 《大话数据结构》之二叉树的四种遍历
- 易用的C++ RPC服务框架 - pioneer - 4 - 技术实现:函数的序列化
- ASIHTTPRequest系列(三):文件上传
- poj2084 Game of Connections
- MathContext的例子
- poj1833 排列
- 一步一步学数据结构之1--n(二叉树遍历--四种方法--递归式)
- mmc换硬币问题
- vi / vim 删除以及其它命令
- 易用的C++ RPC服务框架 - pioneer - 5 - 技术实现:函数的序列化
- 【转载】Android基于HTTP header的用户Authentication
- leetcode length of last word
- 书写CSS的5个小技巧
- 如何证明非方阵的矩阵是否可逆
- Google C++编程命名约定