中点优先顺序遍历数组-递归非递归实现
2015-02-02 15:53
148 查看
递归实现
#include<stdio.h> #define MAX 100 void print(int p[],int left,int right) { if(left<=right) { int mid=(left+right)/2; printf("%d\n",p[mid]); print(p,left,mid-1); print(p,mid+1,right); } }
非递归实现
void Print(int p[],int left,int right) { typedef struct { int l; int r; }stacknode; stacknode stack[MAX]; int i,j,mid,top=0; if(left<=right)//数组不为空 { i=left;j=right; while(i<=j||top!=0)//当当前区域不为空或者栈不为空(存在输出序列) { if(i<=j)//当前区域非空输出该区域 { mid=(i+j)/2; printf("%d\n",p[mid]);//优先输出中间 //将右边区域入栈保存 stack[top].l=mid+1; stack[top].r=j; top++; //进入该区域的左边区域 j=mid-1; } else//该区域为空,出栈得到另一边 { top--; i=stack[top].l; j=stack[top].r; } } } }
int main() { int s[7]={1,2,3,4,5,6,7}; Print(s,0,7-1); print(s,0,7-1); }
相关文章推荐
- (百度笔试)简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- PHP递归遍历多维数组实现无限分类的方法
- KO中对象数组排序时,两个属性的优先顺序不一致时的排序实现
- [二叉树专题]:广度优先:按层次遍历二叉树的非递归实现||使用队列实现层次遍历二叉树
- C++先,中,后顺序遍历的非递归实现
- PHP递归遍历多维数组实现无限分类的方法
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历
- 二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式 二叉树的遍历方式: 1、深度优先:递归,非递归实现方式 1)先序遍历:先访问根节点,再依次访问左子树和右子树 2)中序遍
- 一步一步学数据结构之n--n(图遍历--深度优先遍历--非递归实现)
- 四叉树空间索引原理及其实现 && 递归遍历叶节点并输出至数组
- (百度笔试)简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 树的深度优先遍历和广度优先遍历非递归实现.
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 一步一步学数据结构之n--n(图遍历--深度优先遍历--非递归实现)
- 二叉树用数组顺序存储(完全二叉树)并实现三种遍历,代码详解!!!
- 二叉树基本操作的递归实现(二叉树建立,先序,中序,后序,深度的递归遍历。广度优先,高度优先的非递归遍历)
- 二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式
- 递归方法实现遍历数组
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历