中点优先顺序遍历数组-递归非递归实现
来源:互联网 发布:600588用友网络 编辑:程序博客网 时间:2024/05/17 06:24
递归实现
#include<stdio.h>#define MAX 100void 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);}
0 0
- 中点优先顺序遍历数组-递归非递归实现
- 深度优先遍历算法--非递归实现
- 非递归深度优先遍历
- 深度优先遍历/广度优先遍历(递归+非递归java实现)
- 深度优先遍历算法的非递归实现
- 深度优先遍历算法的非递归实现
- C++先,中,后顺序遍历的非递归实现
- 树的深度优先遍历和广度优先遍历非递归实现.
- 深度优先遍历算法的非递归
- 树的非递归深度优先遍历
- 非递归深度优先遍历算法
- 深度优先遍历的非递归
- 图的深度优先遍历算法的递归与非递归JAVA实现
- 递归非递归实现树的遍历
- 二叉树的深度优先遍历(递归、非递归),广度优先遍历(递归)
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 递归和非递归实现数组求和
- 一些适合新手的网站与博客
- Fragment相关知识
- android 配置环境变量
- 我的学习体系
- UVA A mid-summer night’s dream(中位数求值)
- 中点优先顺序遍历数组-递归非递归实现
- Appium Server 传递的基本参数
- Java 日志记录类Logger理解
- 内存分配的四个例子
- 贪心 FatMouse' Trade
- java.lang.InstantiationError: org.quartz.SimpleTrigger
- Golang的md5加密
- 小知识点——编码表的使用
- POJ 2800 Joseph's Problem