二叉树系列文章之二 二叉树的递归遍历
2013-10-16 23:13
232 查看
第一篇文章我梳理了二叉树的性质
第二篇文章就来说说二叉树的实现以及二叉树的递归形式遍历吧
PS:本人的blog都是用markdown写作的,吐血推荐markdown
这三种方式在实现上区别非常的小,就是对节点的访问操作发生的时间点不同
先序遍历节点访问操作发生在访问两个子节点之前
中序发生在访问两个子节点之间
而后序则是发生在所有子节点都被访问过之后
首先是二叉树的递归先序遍历
同样的二叉树的中序遍历
最后二叉树的后序遍历
二叉树的递归遍历其实是比较简单的内容,因此也就不再深入的探讨了(废话,也没什么好探讨的)
下一篇文章,我将实现二叉树的非递归遍历
第二篇文章就来说说二叉树的实现以及二叉树的递归形式遍历吧
PS:本人的blog都是用markdown写作的,吐血推荐markdown
二叉树节点的定义
typedef struct _node { char data; struct _node *l; struct _node *r; }node;
二叉树的递归遍历
二叉树的递归遍历一共分成三种,先序和中序以及后序遍历这三种方式在实现上区别非常的小,就是对节点的访问操作发生的时间点不同
先序遍历节点访问操作发生在访问两个子节点之前
中序发生在访问两个子节点之间
而后序则是发生在所有子节点都被访问过之后
首先是二叉树的递归先序遍历
int depth_first_rec(node *root) { if(!root) return 0; printf("%c ",root->data); root->l && depth_first_rec(root->l); root->r && depth_first_rec(root->r); }
同样的二叉树的中序遍历
int depth_mid_rec(node *root) { if(!root) return 0; root->l && depth_mid_rec(root->l); printf("%c ",root->data); root->r && depth_mid_rec(root->r); }
最后二叉树的后序遍历
int depth_last_rec(node *root) { if(!root) return 0; root->l && depth_last_rec(root->l); root->r && depth_last_rec(root->r); printf("%c ",root->data); }
二叉树的递归遍历其实是比较简单的内容,因此也就不再深入的探讨了(废话,也没什么好探讨的)
下一篇文章,我将实现二叉树的非递归遍历
转载请注明出处: No47K的博客
相关文章推荐
- 二叉树系列6:非递归遍历
- [算法系列之二]二叉树各种遍历
- 微软面试100题系列---二叉树的遍历递归和非递归实现
- 数据结构(二叉树系列)先序创建三种遍历和求深度(递归实现)
- 二叉树系列(2)前序中序后序遍历的递归和非递归实现
- [算法系列之二]二叉树各种遍历
- 二叉树系列文章之四 二叉树非递归的后序遍历
- 二叉树系列之二(遍历与查找)
- 二叉树系列(3)层序遍历的非递归实现
- 二叉树系列三:二叉树的遍历(递归方法)
- 【应聘笔记系列】二叉树的递归与非递归遍历实现
- 二叉树系列四:二叉树的遍历(非递归)
- JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
- 二叉树非递归遍历
- 二叉树的遍历(非递归)
- 【J2me3D系列学习文章之二】(立即模式)构造我们3D世界中的第一个立方体!
- 二叉树各种递归非递归层次遍历
- 二叉树前、中、后及层次非递归遍历
- java 实现二叉树的构建,先序,中序,后序,层次,递归,非递归的遍历
- 采用二叉链表结构实现二叉树,并以递归遍历思想实现二叉树的创建、二叉树的遍历(先序、中序、后序和层次遍历)