2019山西省資料簡介入門

2022-09-19 23:39:04 字數 891 閱讀 9518

if(pre==null)pre=t;// 中序遍歷的第乙個結點不必判斷

else if(pre->datadata)pre=t;//前驅指標指向當前結點

else //不是完全二叉樹

judgebst (t->rlink,flag);// 中序遍歷右子樹

judgebst演算法結束

2、程式設計實現單鏈表的就地逆置。

23.在陣列 a[1..n]中有n個資料,試建立乙個帶有頭結點的迴圈鍊錶,頭指標為h,要求鏈中資料從小到大排列,重複的資料在鏈中只儲存乙個.

3、後序遍歷最後訪問根結點,即在遞迴演算法中,根是壓在棧底的。採用後序非遞迴演算法,棧中存放二叉樹結點的指標,當訪問到某結點時,棧中所有元素均為該結點的祖先。本題要找p和q 的最近共同祖先結點r ,不失一般性,設p在q的左邊。

後序遍歷必然先遍歷到結點p,棧中元素均為p的祖先。將棧拷入另一輔助棧中。再繼續遍歷到結點q時,將棧中元素從棧頂開始逐個到輔助棧中去匹配,第乙個匹配(即相等)的元素就是結點p 和q的最近公共祖先。

typedef struct

bitree t;int tag;//tag=0 表示結點的左子女已被訪問,tag=1表示結點的右子女已被訪問

stack;

stack s,s1;//棧,容量夠大

bitree ancestor(bitree root,p,q,r)//求二叉樹上結點p和q的最近的共同祖先結點r。 //沿左分枝向下

if(bt==p) //不失一般性,假定p在q的左側,遇結點p時,棧中元素均為p的祖先結點 //將棧s的元素轉入輔助棧s1 儲存 if(bt==q) //找到q 結點。

for(i=top;i>0;i--)//;將棧中元素的樹結點到s1去匹配

pp=s[i].t;

for (j=top1;j>0;j--)

2023年山西省資料總結大綱

1 設t是給定的一棵二叉樹,下面的遞迴程式count t 用於求得 二叉樹t中具有非空的左,右兩個兒子的結點個數n2 只有非空左兒子的個數nl 只有非空右兒子的結點個數nr和葉子結點個數n0。n2 nl nr n0都是全域性量,且在呼叫count t 之前都置為0.typedef struct no...

2023年山西省資料總結高階

1 氣泡排序演算法是把大的元素向上移 氣泡的上浮 也可以把小的元素向下移 氣泡的下沉 請給出上浮和下沉過程交替的氣泡排序演算法。48.有n個記錄儲存在帶頭結點的雙向鍊錶中,現用雙向起泡排序法對其按上公升序進行排序,請寫出這種排序的演算法。注 雙向起泡排序即相鄰兩趟排序向相反方向起泡 2 我們用l代表...

2023年山西省資料總結大綱

1 設t是給定的一棵二叉樹,下面的遞迴程式count t 用於求得 二叉樹t中具有非空的左,右兩個兒子的結點個數n2 只有非空左兒子的個數nl 只有非空右兒子的結點個數nr和葉子結點個數n0。n2 nl nr n0都是全域性量,且在呼叫count t 之前都置為0.typedef struct no...