(pat)A 14043.Is It a Binary Search Tree
A Binary Search Tree(BST)is recursively defined as a binary tree which has the following properties:
1.The left subtree of a node contains only node s with key s less than the node’s key.2.The rightsubtreeof a node contains onlynodes with keys graaaaaaaaaaaaaaaatothe the node’s key.Both the the skey.Both the ath the stststststrererererererererererererererereaffffftttttttttttttfffffffffffffrerererererererererererererererererererererererererererererethen the rerrulting tree is caled the Mirror Image of a BST.
Now given a sequence of integer keys,you are supposed to tell if it is the preorder trversal sequence of a BST or the mirror image of a BST.
Input Specification:
Each input file contains one test case.For each case,the first line contains a positive integer N(<=1000).The n N integer keys are given in the next line.All the numbers in a line e e e separated bya space.space.
Output Specification:
For each test case,first print in a line「YES」if the sequence is the preorder trversal sequence of a BST or the mirror image of a BST,or「NO」if not.The n if the answer is「YES」,print ine the next the the the next the fortrtratrader line of line e e e e e e e e e e e e e e e e e e e e e e e e.parever.ortratratratratratratratratratratratratratratratratratrable.and there must beのextra space at the end of the line.
Sample Input 1:7 8 6 7 7 7 7 10 11 Sample Output 1:YES 5 8 11 8 Sample Input 2:7 8 8 10 11 11 8 8 7 7 Sample Output 2:YES 11 7 6 8 Sample Input 3:7 8 8 8 11 11 Sample Output 3:NOこの問題は何回か分かりません.前の二つの点の大きさの関係でBSTかミラーのどちらかが分かります.
1.The left subtree of a node contains only node s with key s less than the node’s key.2.The rightsubtreeof a node contains onlynodes with keys graaaaaaaaaaaaaaaatothe the node’s key.Both the the skey.Both the ath the stststststrererererererererererererererereaffffftttttttttttttfffffffffffffrerererererererererererererererererererererererererererererethen the rerrulting tree is caled the Mirror Image of a BST.
Now given a sequence of integer keys,you are supposed to tell if it is the preorder trversal sequence of a BST or the mirror image of a BST.
Input Specification:
Each input file contains one test case.For each case,the first line contains a positive integer N(<=1000).The n N integer keys are given in the next line.All the numbers in a line e e e separated bya space.space.
Output Specification:
For each test case,first print in a line「YES」if the sequence is the preorder trversal sequence of a BST or the mirror image of a BST,or「NO」if not.The n if the answer is「YES」,print ine the next the the the next the fortrtratrader line of line e e e e e e e e e e e e e e e e e e e e e e e e.parever.ortratratratratratratratratratratratratratratratratratrable.and there must beのextra space at the end of the line.
Sample Input 1:7 8 6 7 7 7 7 10 11 Sample Output 1:YES 5 8 11 8 Sample Input 2:7 8 8 10 11 11 8 8 7 7 Sample Output 2:YES 11 7 6 8 Sample Input 3:7 8 8 8 11 11 Sample Output 3:NOこの問題は何回か分かりません.前の二つの点の大きさの関係でBSTかミラーのどちらかが分かります.
#include
#include
using namespace std;
struct node
{
int val;
node *l;
node *r;
};
void insert1(node* &root,int x)
{
if(root==NULL)
{
root=new node;
root->val=x;
root->l=root->r=NULL;
return;
}
if(xval)
insert1(root->l,x);
else
insert1(root->r,x);
}
void insert2(node* &root,int x)
{
if(root==NULL)
{
root=new node;
root->val=x;
root->l=root->r=NULL;
return;
}
if(x>=root->val)
insert2(root->l,x);
else
insert2(root->r,x);
}
int a[1005];
int b[1005];
int num=0;
void pre(node* root)
{
if(root==NULL)
return;
b[num++]=root->val;
pre(root->l);
pre(root->r);
}
void post(node* root)
{
if(root==NULL)
return;
post(root->l);
post(root->r);
b[num++]=root->val;
}
int main()
{
int n;
node* root=NULL;
scanf("%d",&n);
for(int i=0;iscanf("%d",a+i);
if(n==1)
{
printf("YES
%d",a[0]);
return 0;
}
if(a[0]>a[1])
for(int i=0;ielse
for(int i=0;i//printf("haha");
pre(root);
bool flag=true;
for(int i=0;iif(a[i]!=b[i])
{
flag=false;
break;
}
if(flag)
{
printf("YES
");
num=0;
post(root);
for(int i=0;i1;i++)
printf("%d ",b[i]);
printf("%d",b[n-1]);
}
else
printf("NO");
return 0;
}