1、假設k1,…,kn是n個關鍵詞,試解答:
試用二叉查詢樹的插入演算法建立一棵二叉查詢樹,即當關鍵詞的插入次序為k1,k2,…,kn時,用演算法建立一棵以llink / rlink 鏈結表示的二叉查詢樹。
2、 二叉樹的層次遍歷序列的第乙個結點是二叉樹的根。實際上,層次遍歷序列中的每個結點都是「區域性根」。確定根後,到二叉樹的中序序列中,查到該結點,該結點將二叉樹分為「左根右」三部分。
若左、右子樹均有,則層次序列根結點的後面應是左右子樹的根;若中序序列中只有左子樹或只有右子樹,則在層次序列的根結點後也只有左子樹的根或右子樹的根。這樣,定義乙個全域性變數指標r,指向層次序列待處理元素。演算法中先處理根結點,將根結點和左右子女的資訊入佇列。
然後,在佇列不空的條件下,迴圈處理二叉樹的結點。佇列中元素的資料結構定義如下:
typedef struct
qnode;
bitree creat(datatype in,level,int n)
//由二叉樹的層次序列level[n]和中序序列in[n]生成二叉樹。 n是二叉樹的結點數
qnode s,qq是元素為qnode型別的佇列,容量足夠大
init(q); int r=0; //r是層次序列指標,指向當前待處理的結點
bitree p=(bitree)malloc(sizeof(binode生成根結點
p->data=level[0]; p->lchild=null; p->rchild=null; //填寫該結點資料
for (i=0; i if (in[i]==level[0]) break;
if (i==0) //根結點無左子樹,遍歷序列的1—n-1是右子樹
else if (i==n-1) //根結點無右子樹,遍歷序列的1—n-1是左子樹
else //根結點有左子樹和右子樹
while (!empty(q)) //當佇列不空,進行迴圈,構造二叉樹的左右子樹
else if (i==
else
}//結束while (!empty(q))
return(p);
}//演算法結束
3、證明由二叉樹的中序序列和後序序列,也可以唯一確定一棵二叉樹。
29. ① 試找出滿足下列條件的二叉樹
1)先序序列與後序序列相同 2)中序序列與後序序列相同
3)先序序列與中序序列相同 4)中序序列與層次遍歷序列相同
4、假設以i和o分別表示入棧和出棧操作。棧的初態和終態均為空,入棧和出棧的操作序列可表示為僅由i和o組成的序列,稱可以操作的序列為合法序列,否則稱為非法序列。(15分)
(1)a和d是合法序列,b和c 是非法序列。
(2)設被判定的操作序列已存入一維陣列a中。
int judge(char a)
判斷字元陣列a中的輸入輸出序列是否是合法序列。如是,返回true,否則返回false。
i++; //不論a[i]是『i』或『o』,指標i均後移。}
if(j!=k)
else
演算法結束。
5、 連通圖的生成樹包括圖中的全部n個頂點和足以使圖連通的n-1條邊,最小生成樹是邊上權值之和最小的生成樹。故可按權值從大到小對邊進行排序,然後從大到小將邊刪除。每刪除一條當前權值最大的邊後,就去測試圖是否仍連通,若不再連通,則將該邊恢復。
若仍連通,繼續向下刪;直到剩n-1條邊為止。
void spntree (adjlist g)
//用「破圈法」求解帶權連通無向圖的一棵最小代價生成樹。
node; //設頂點資訊就是頂點編號,權是整型數
node edge;
scanf( "%d%d",&e,&n) ; //輸入邊數和頂點數。
for (i=1;i<=e;i輸入e條邊:頂點,權值。
scanf("%d%d%d" ,&edge[i].i ,&edge[i].j ,&edge[i].w);
for (i=2;i<=e;i++) //按邊上的權值大小,對邊進行逆序排序。
//for
k=1; eg=e;
while (eg>=n破圈,直到邊數e=n-1.
if (connect(k)) //刪除第k條邊若仍連通。
edge[k].w=0; eg--; }//測試下一條邊edge[k],權值置0表示該邊被刪除
k++; //下條邊
while
}//演算法結束。
connect()是測試圖是否連通的函式,可用圖的遍歷實現,
6、本題要求建立有序的迴圈鍊錶。從頭到尾掃瞄陣列a,取出a[i](0<=ilinkedlist creat(elemtype a,int n)
//由含n個資料的陣列a生成迴圈鍊錶,要求鍊錶有序並且無值重複結點
//查詢a[i]的插入位置
if(p==h || p->data!=a[i重複資料不再輸入
}//for
return(h);
2019安徽省資料理論加強
1 本題要求建立有序的迴圈鍊錶。從頭到尾掃瞄陣列a,取出a i 0 ilinkedlist creat elemtype a,int n 由含n個資料的陣列a生成迴圈鍊錶,要求鍊錶有序並且無值重複結點 查詢a i 的插入位置 if p h p data a i重複資料不再輸入 for return ...
2019湖北省資料理論基礎
1 本題要求建立有序的迴圈鍊錶。從頭到尾掃瞄陣列a,取出a i 0 ilinkedlist creat elemtype a,int n 由含n個資料的陣列a生成迴圈鍊錶,要求鍊錶有序並且無值重複結點 查詢a i 的插入位置 if p h p data a i重複資料不再輸入 for return ...
2023年河北省資料總結加強
1 證明由二叉樹的中序序列和後序序列,也可以唯一確定一棵二叉樹。29.試找出滿足下列條件的二叉樹 1 先序序列與後序序列相同 2 中序序列與後序序列相同 3 先序序列與中序序列相同 4 中序序列與層次遍歷序列相同 2 證明由二叉樹的中序序列和後序序列,也可以唯一確定一棵二叉樹。29.試找出滿足下列條...