題意:給定n以及n個整數,問該序列是否為二叉搜尋樹的前序遍歷或者二叉搜尋樹映象的前序遍歷,若是,則輸出yes,並輸出其後序遍歷,否則輸出no。
思路:先判斷是否為二叉搜尋樹的前序遍歷,令is=false,通過遞迴和二叉搜尋樹的性質計算其後序遍歷序列,若序列長度等於n,即成立,否則令is=true,再次計算其後序遍歷序列,若序列長度為n即成立,否則輸出「no」。
ac**:
1 #include2using
namespace
std;34
intn;
5 vectorpre,post;
6boolis;
78void getpost(int l,int
r)15
else
19if(i-j!=1) return
;20 getpost(l+1
,j);
21getpost(i,r);
22post.push_back(pre[l]);23}
2425
intmain()
36if(post.size()==n)
42else
43 printf("
no\n");
44return0;
45 }
PTA L2 004 這是二叉搜尋樹嗎
一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。輸入的第一行給出正整數 n 1000 隨後一行給出 n 個整數鍵值,其間...
PTA L2 004 這是二叉搜尋樹嗎?
一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。輸入的第一行給出正整數 n 1000 隨後一行給出 n 個整數鍵值,其間...
這是二叉搜尋樹嗎?
一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。輸入格式 輸入的第一行給出正整數n 1000 隨後一行給出n個整數鍵值,...