判断一个序列是不是二叉查找树的后序遍历结果
2013-05-22 14:53
267 查看
#include <cstdlib> #include <iostream> using namespace std; //判断一个序列是不是二叉查找树的后序遍历结果 //2013.05.22 PM bool isBack(int *p, int begin, int end) { //边界值判断 if(begin>end) return false; //序列为空或者只有一个元素,不用判断,怎样都是真 //if(end==0 ||end==1),这个判断有问题, //return true; if(begin==end) return true; //后序遍历最后一个元素是根 int root=*(p+end); int i=begin; //开始的下标,直到遇到比根大的 元素停止。 for(i;i!=end;++i) { if(*(p+i)>root) break; } //mid的位置是第一个比root大的元素的位置 int mid=i; //从这点开始,出现比根小的元素停止,说明不是后序的 for(int j=mid;j!=end;++j) { if(*(p+j)<root) return false; } //递归左边的序列 bool left =isBack(p,begin,mid-1); //递归右边的序列 bool right =isBack(p,mid,end-1); return (left&&right); } int main(int argc, char *argv[]) { //二叉查找树序列{1 2 3 4 5 6 7} //的后序排列为 1325764; //结果为真 int arr[]={1,3,2,5,7,6,4}; //int *p=arr; bool res=isBack(arr,0,6); cout<<res<<endl; system("PAUSE"); return EXIT_SUCCESS; }
相关文章推荐
- 判断整数序列是不是某二叉查找树的后序遍历的结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- 判断整数序列是不是二元查找树的后序遍历结果 C++实现
- 程序员面试题100题第06题——判断整数序列是不是二元查找树的后序遍历结果
- 第九题(判断整数序列是不是二元查找树的后序遍历结果)
- 判断整数序列是不是二元查找树的后序遍历结果
- 【算法】判断整数序列是不是二元查找树的后序遍历结果
- 判断一个数组是不是二叉树后序遍历的结果
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是二叉搜索树的后序遍历序列
- 面试100题:9.判断整数序列是不是二元查找树的后序遍历结果
- 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)
- 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 判断整数序列是不是二元查找树的后序遍历结果
- java实现输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- 判断整数序列是不是二元查找树的后序遍历结果
- java 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 判断一个整数数组是不是二叉搜索树的后序遍历序列