题目1367:二叉搜索树的后序遍历序列

题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。输入:每个测试案例包括2行:第一行为1个整数n(1<=n<=10000),表示数组的长度。第二行包含n个整数,表示这个数组,,数组中的数的范围是[0,100000000]。输出:对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出No。样例输入:75 7 6 9 11 10 847 4 6 5样例输出:Yes

No

推荐指数:※

来源:?pid=1367

二叉搜索树的左子树都比更小,右子数都比根大。

#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>using namespace std;bool rebuild_tree(int low,int high,long long *arr){if(low>high)return true;int i,index=high;long long tmp=arr[high];for(i=low;i<high;i++){if(arr[i]>tmp){index=i;break;}}for(i=index+1;i<high;i++){if(arr[i]<tmp)return false;}return (rebuild_tree(low,index-1,arr)==true&&rebuild_tree(index+1,high-1,arr)==true);}int main(){int n,i;while(scanf("%d",&n)!=EOF){long long *arr=new long long [n];for(i=0;i<n;i++)scanf("%lld",&arr[i]);if(rebuild_tree(0,n-1,arr)==false)printf("No\n");elseprintf("Yes\n");}return 0;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

真正的爱,应该超越生命的长度、心灵的宽度、灵魂的深度

题目1367:二叉搜索树的后序遍历序列

相关文章:

你感兴趣的文章:

标签云: