當前位置:編程學習大全網 - 編程語言 - 數據結構編程樹的重構題目如下?

數據結構編程樹的重構題目如下?

#包含“iostream.h”

#包含“conio.h”

bool top order(int in order[],int Inlow,int Inhigh,

//中間序列in//順序,要在low和Inhigh中處理的中間序列範圍。

int PostOrder[],int Postlow,int Posthigh,

//後序後序序列,要處理的後低後高後序範圍。

int PreOrder[],int Prelow,int Prehigh)

//PreOrder,Prelow和Prehigh存儲前序的範圍。

{

bool lflag = 0,rflag = 0;

if((Inhigh - Inlow)!= (Posthigh-Postlow)) //中間序列的長度不等於後面序列的長度。

返回false

if((in high-in low)= =-1)& amp;& amp((post high-post low)=-1))//空樹

返回true

int root = PostOrder[Posthigh],pos//root是後序列中的最後壹個,pos表示根在中間序列中的位置。

for(pos = in low;pos & lt= Inhighpos++){

if(in order[pos]= = root)break;

}

if(pos & gt;Inhigh)返回false//如果在中間序列中沒有找到根,

PreOrder[Prelow]= root;//先確定序言中的詞根。

lflag = ToPreOrder(InOrder,Inlow,pos - 1,

郵購,郵購,郵購+郵購- 1,

預購,Prelow + 1,Prelow+pos-in low);//遞歸處理左邊的子樹

rflag = ToPreOrder(InOrder,pos + 1,Inhigh,

後置,後置+後置,後置- 1,

預購,Prelow + pos - Inlow + 1,Prehigh);//遞歸處理右邊的子樹

返回lflag & amp& amprflag//返回處理結果。

}

void main()

{

int pre[20],in[20],post[20];

int n;

CIN & gt;& gtn;//輸入節點數

cout & lt& ltendl

for(int I = 0;我& ltn;I++) //進入中間序列。

CIN & gt;& gt在[i]中;

cout & lt& ltendl

for(I = 0;我& ltn;I++) //輸入後序序列

CIN & gt;& gtpost[I];

cout & lt& ltendl

如果(!ToPreOrder(in,0,n - 1,post,0,n - 1,pre,0,n - 1))

cout & lt& lt"-1 \ n ";

其他

{

for(I = 0;我& ltn-1;i++)

cout & lt& ltpre[I]& lt;& lt" ";

cout & lt& ltpre[n-1];

}

cout & lt& ltendl

getch();

}

  • 上一篇:200高分 C語言程序設計 畫圖 問題 (WinTC)
  • 下一篇:編程明星兒童
  • copyright 2024編程學習大全網