三種建樹方法

2022-10-11 06:54:07 字數 1139 閱讀 2556

首先定義一下樹的結點

struct

node;

前序中序序列建立二叉樹:

//

in和pre陣列存放二叉樹的中序和前序遍歷序列

node* build(int prel,int prer,int inl,int

inr)

}x=x-inl;

root->l=build(prel+1,prel+x,inl,inl+x-1

); root->r=build(prel+1+x,prer,inl+x+1

,inr);

return

root;

}

後序中序序列建立二叉樹:

//

in和post陣列存放二叉樹的中序和後序遍歷序列

node* build(int postl,int postr,int inl,int

inr)

}x=x-inl; //

x表示左子樹結點的個數

root->l=build(postl,postl+x-1,inl,inl+x-1

); root->r=build(postl+x,postr-1,inl+x+1

,inr);

return

root;

}

層序中序序列建立二叉樹:

//

in和level陣列存放二叉樹的中序和層序遍歷序列

node* build(int levl,int levr,int inl,int

inr)

}if(flag==1

)

break

; levl++;

}node* root=(node*)malloc(sizeof

(node));

root->val= in

[k];

k=k-inl;

root->l=build(levl,levr,inl,inl+k-1

); root->r=build(levl,levr,inl+k+1

,inr);

return

root;

}

節流方法 三種

時間戳缺點 第一次直接觸發 最後一次1000ms內無法觸發 function throttle fun,delay function handle window.addeventlistener scroll throttle handle,1000 定時器缺點 第一次延遲觸發 最後一次延遲觸發 f...

三種排序方法

氣泡排序 原理 對乙個數列,我們將它進行輪循和交換,每次輪循出最大數或最小數放在對尾,依次進行迴圈,輪循長度為 1。int num new int for int i 0 i 1 i 插入排序 原理 對乙個數列,我們從第二個數開始,將它與它前面的數字進行比較,每次選出最大 或最小的數放在隊首,因而形...

三種素數篩選方法

第一種 剔除2 3 4 5 6 的倍數 在i從2開始的增一變化過程中,剔除i的倍數即j i j是大於等於2的自然數,j的上限是問題規模m 為了減少重複步驟,可以每當i遞增到等於第乙個沒有被剔除的 素 數時再剔除該數的倍數,重複上述過程至i到達問題規模m的平方根 1 需要說明的三個問題 假設迴圈到第n...