C/C++面试题(三) 推断二叉树、快速排序递归实现、递归判断数组递增
2011-10-25 20:08
696 查看
1、一棵二叉树前序序列为A B D E G C F H I 对称序列为DBGEACHFI则其后序列为?
DGEBHIFCA
从前序序列来看,根节点是A,在对称序列中可以发现,A的左子树是DBGE,右子树是CHFI,然后再看前序序列,DBGE中,的根节点是B,在对称序列中发现B的左子树是D,右子树就是GE,同样地,CHFI也用相同的方法去判断,就可以得到结果了。
2、快速排序的递归实现:
3、用递归算法判断数组a
是否为一个递增数组
因为传入的是数组中元素的个数,最大的元素为n-1。
第一次调用传入的是最大的值,就想到倒着比,即判断每一个值和它的前一个值的大小,直到剩一个为止。
本篇博客出自 阿修罗道,转载请注明出处:/article/1505675.html
DGEBHIFCA
从前序序列来看,根节点是A,在对称序列中可以发现,A的左子树是DBGE,右子树是CHFI,然后再看前序序列,DBGE中,的根节点是B,在对称序列中发现B的左子树是D,右子树就是GE,同样地,CHFI也用相同的方法去判断,就可以得到结果了。
2、快速排序的递归实现:
void quick_sort(int a[],int low,int high){ int l = low; int r = high; int key = a[l]; //处理一侧已经没有其他数据的情况 if(low>=high){ return; } while(l<r){ //要有l<r的判断因为在循环中改变了值,必须有=的判断否则key=a[r]将造成死循环 while(l<r && a[r]>=key) r--; a[l]=a[r]; while(l<r && a[l]<=key) l++; a[r] = a[l]; } a[l]=key; quick_sort(a,low,l-1); quick_sort(a,l+1,high); }
3、用递归算法判断数组a
是否为一个递增数组
int is_large(int a[],int n){ if(!a){ return 0; } if(n==1){ return 1; } return is_large(a,n-1) && (a[n-2]<a[n-1]); }
因为传入的是数组中元素的个数,最大的元素为n-1。
第一次调用传入的是最大的值,就想到倒着比,即判断每一个值和它的前一个值的大小,直到剩一个为止。
本篇博客出自 阿修罗道,转载请注明出处:/article/1505675.html
相关文章推荐
- C/C++面试题(三) 推断二叉树、快速排序递归实现、递归判断数组递增
- C++实现快速排序,递归写法
- 快速排序C++实现(递归,非递归)
- 快速排序的两种实现思路和非递归实现--C++实现
- (PHP实现剑指offer)在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 面试例题:输入n,求一个n x n矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现? (中国台湾著名硬件公司2007年11月面试题)
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- C语言:【面试题】在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
- 霍尔快速排序 非递归 C++实现
- C++ 快速排序 递归实现
- 剑指offer--快速排序递归实现,年龄排序O(N)实现,旋转数组最小值查找
- 霍尔快速排序 非递归 C++实现
- 递归实现判断数组是否递增
- 快速排序 数组+递归实现
- PHP实现在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。(Python实现)
- 快速排序-c++(分别用数组和容器实现)
- C语言:【面试题】在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
- 快速排序的递归和非递归实现 -----C++、JAVA代码实现
- (PHP实现剑指offer)在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。