1、設t是給定的一棵二叉樹,下面的遞迴程式count(t)用於求得:二叉樹t中具有非空的左,右兩個兒子的結點個數n2;只有非空左兒子的個數nl;只有非空右兒子的結點個數nr和葉子結點個數n0。n2、nl、nr、n0都是全域性量,且在呼叫count(t)之前都置為0.
typedef struct node
node;
int n2,nl,nr,n0;
void count(node *t)
26.樹的先序非遞迴演算法。
void example(b)
btree *b;
if (p->lchild!=null)
(3)___; (4)__;
}}}}
2、二部圖(bipartite graph) g=(v,e)是乙個能將其結點集v分為兩不相交子集v 1和v2=v-v1的無向圖,使得:v1中的任何兩個結點在圖g中均不相鄰,v2中的任何結點在圖g中也均不相鄰。
(1).請各舉乙個結點個數為5的二部圖和非二部圖的例子。
(2).請用c或pascal編寫乙個函式bipartite判斷乙個連通無向圖g是否是二部圖,並分析程式的時間複雜度。設g用二維陣列a來表示,大小為n*n(n為結點個數)。請在程式中加必要的注釋。
若有必要可直接利用堆疊或佇列操作。【
3、根據二叉排序樹中序遍歷所得結點值為增序的性質,在遍歷中將當前遍歷結點與其前驅結點值比較,即可得出結論,為此設全域性指標變數pre(初值為null)和全域性變數flag,初值為true。若非二叉排序樹,則置flag為false。
#define true 1
#define false 0
typedef struct node
*btree;
void judgebst(btree t,int flag)
// 判斷二叉樹是否是二叉排序樹,本演算法結束後,在呼叫程式中由flag得出結論。
//不是完全二叉樹
judgebst (t->rlink,flag);// 中序遍歷右子樹
}//judgebst演算法結束
4、矩陣中元素按行和按列都已排序,要求查詢時間複雜度為o(m+n),因此不能採用常規的二層迴圈的查詢。可以先從右上角(i=a,j=d)元素與x比較,只有三種情況:一是a[i,j]>x, 這情況下向j 小的方向繼續查詢;二是a[i,j]void search(datatype a[ ][ ], int a,b,c,d, datatype x)
//n*m矩陣a,行下標從a到b,列下標從c到d,本演算法查詢x是否在矩陣a中.
else if (a[i][j]>x) j--; else i++;
if(flag) printf(「a[%d][%d]=%d」,i,j,x假定x為整型.
else printf(「矩陣a中無%d 元素」,x);
}演算法search結束。
[演算法討論]演算法中查詢x的路線從右上角開始,向下(當x>a[i,j])或向左(當x 1 設有一組初始記錄關鍵字序列 k1,k2,kn 要求設計乙個演算法能夠在o n 的時間複雜度內將線性表劃分成兩部分,其中左半部分的每個關鍵字均小於ki,右半部分的每個關鍵字均大於等於ki。void quickpass int r,int s,int t r i x 2 二路插入排序是將待排關鍵字序... 1 設指標變數p指向雙向鍊錶中結點a,指標變數q指向被插入結點b,要求給出在結點a 的後面插入結點b的操作序列 設雙向鍊錶中結點的兩個指標域分別為llink和rlink 2 二部圖 bipartite graph g v,e 是乙個能將其結點集v分為兩不相交子集v 1和v2 v v1的無向圖,使得 ... 1 二部圖 bipartite graph g v,e 是乙個能將其結點集v分為兩不相交子集v 1和v2 v v1的無向圖,使得 v1中的任何兩個結點在圖g中均不相鄰,v2中的任何結點在圖g中也均不相鄰。1 請各舉乙個結點個數為5的二部圖和非二部圖的例子。2 請用c或pascal編寫乙個函式bipa...2023年遼寧省資料總結摘要
2023年遼寧省資料總結入門
2023年遼寧省資料總結大綱