浙江大學PAT甲級A1138 C )題解

2021-10-02 09:29:15 字數 1582 閱讀 8817

如果有哪位同學幸運的看到這篇題解:恭喜你,你賺大了!你會看到乙個簡單理解而且實用的技巧。

乍一看,不就是前序中序建樹嘛。。有什麼奇怪的。如果此題常規建樹,後序遍歷後兩個測試用例超時!。

那麼怎麼進行優化呢?顯然 在尋找根結點時候,不用for迴圈(題中注釋),而改用map!map在輸入的時候已經記錄了根節點的位置!

#include 

#include

#include

using namespace std;

struct node

;int pre[

100100];

int in[

100100];

vector<

int>

v;map<

int,

int>

m;node*

create

(int prel,

int prer,

int inl,

int inr)

node* root =

newnode

; root-

>data = pre[prel]

;// int k ;

// for(k =inl;k

// if(in[k]==pre[prel])

// break;

// }

int k =m[root-

>data]

;int numleft = k -inl;

// int numright = inr-k;

// if(numleft==0&&numright==0)

root-

>lchild=

create

(prel+

1,prel+numleft,inl,k-1)

; root-

>rchild =

create

(prel+numleft+

1,prer,k+

1,inr)

;return root;

}void

postorder

(node* root)

postorder

(root-

>lchild)

;postorder

(root-

>rchild)

;int k=root-

>data;

coutv.

push_back

(k);

return;}

int n;

intmain()

for(

int i =

0;i) node* root =

create(0

,n-1,0

,n-1);

postorder

(root)

; cout<;return0;

}

如果有哪位同學幸運的看到這篇題解:恭喜你,你賺大了!你會看到乙個簡單理解而且實用的技巧。

乍一看,不就是前序中序建樹嘛。

浙江大學PAT甲級A1020(C )題解

include include include using namespace std const int content 50 struct node int post content int in content node create int postl,int postr,int inl,i...

浙江大學PAT甲級A1074題解 C 2

include include include using namespace std struct node int main while first 1 first next first for int i k i real.size i i k cout int i 0 isize i els...

浙江大學pat 1001

注意點 1.對於輸出結果是負數先輸出負號 2.將結果轉化成char型別來進行輸出可以避免輸出 的複雜操作。這裡使用函式sprintf 實現。如下 include include include include include include define maxnum 0x3f3f3f3f defi...