二叉搜索树的前序遍序序列 仿后序
实现功能:给定一个序列,判断是否是一个搜索树的前序序列,如果是输出"Yes",反之输出"NO"。
这是后序遍历链接:http://blog.csdn.net/wyh7280/article/details/47067603
要解决的问题和题目:http://ac.jobdu.com/problem.php?pid=1367 类似
注:这里考虑严格的二叉搜索树,即左子树上的值全部小于根,右子树上的值全部大于根,不存在相等情况,两两不同。
代码:
#include<iostream> #include<cstdlib> #include<cstdio> using namespace std; bool Is_PreOrder(int *val,int beg,int en) { int i,j; if(beg>en) return true; int temp=val[beg]; for(i=beg+1;i<=en;i++) { if(val[i]>temp) break; } for(j=i+1;j<=en;j++) { if(val[j]<temp) return false; } return Is_PreOrder(val,beg+1,i-1)&&Is_PreOrder(val,i+1,en); } int main() { int n; int val[1000]; while(scanf("%d",&n)==1) { for(int i=0;i<n;i++) scanf("%d",&val[i]); if(Is_PreOrder(val,0,n-1)) { printf("Yes\n"); } else printf("No\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
posted on 2015-07-26 15:03 Tob__yuhong 阅读(181) 评论(0) 编辑 收藏 举报