演算法導論第十二章筆記

2021-10-03 17:30:17 字數 1505 閱讀 7390

這裡的二叉樹型別分別包含關鍵字key,left、right、parent、指標分別指向左孩子、右孩子、雙親。若對應節點不存在就用nullptr空指標代替。這裡的二叉搜尋樹,對於任何節點x,其左子數的關鍵字最大不超過x->key,其右子樹的關鍵字不低於x->key。二叉樹遍歷有中序,先序,後序三種遍歷方式,根據輸出的根關鍵字在其左右子樹間的位置來命名,這邊裡的函式是中序遍歷。

這邊要注意的是插入與刪除函式,插入函式是先遍歷指標找到插入元素可以所在的位置插入。而刪除函式略微複雜分四種情況討論如圖所示:

刪除函式有用到轉移節點的函式和尋找後繼的函式,下面的**中都有些到。

#include

using

namespace std;

struct tree

;void

insert_tree

(tree*

&t,int d)

z->parent=y;

if(y==

nullptr

) t=z;

else

if(z-

>key

>key)

y->left=z;

else y-

>right=z;

}void

inorder_tree

(tree*x)

tree*

tree_search

(tree*x,

int k)

void

transplant

(tree *

&t,tree*

&u,tree*

&v)tree*

tree_min

(tree*x)

tree*

tree_delete

(tree*t,tree*z)

transplant

(t,z,y)

; y-

>left=z-

>left;

y->left-

>parent=y;

}return t;

}int

main()

inorder_tree

(t);

tree*x=t;

x=x-

>left;

t=tree_delete

(t,t)

; cout<

inorder_tree

(t);

return0;

}

建立二叉樹插入節點遍歷節點輸出和刪除根的結果圖:

C Primer Plus 第十二章筆記

1.呼叫複製建構函式 當函式按值傳遞物件或函式返回物件時,都將使用複製建構函式。2.如果類中包含了使用new初始化的指標成員,應當定義乙個複製建構函式,以複製指向的資料,而不是指標,稱為深度賦值。複製的另一種形式只是複製指標值,僅淺淺地複製指標資訊,稱為淺複製。3.將已有的物件賦給另乙個物件時,將使...

第十二章學習筆記

塊裝置將資訊儲存在固定大小的塊中,每個塊都有自己的位址。對作業系統來說,塊裝置是以字元裝置的外觀展現的,雖然對這種字元裝置可以按照位元組為單位進行訪問,但是實際上到塊裝置上卻是以塊為單位 最小512byte,既乙個扇區 這之間的轉換是由作業系統來完成的。扇區 磁碟碟片上的扇形區域,邏輯化資料,方便管...

第十二章 學習筆記

檔案系統使用一系列i o緩衝區作為塊裝置的快取記憶體。當程序試圖讀取 dev,blk 標識的磁碟塊時,他首先在緩衝區快取中搜尋分配給磁碟塊的緩衝區。如果緩衝區中存在並且包含有效資料,那麼它只需要從緩衝區中讀取資料,而無需再次從磁碟中讀取資料塊。如果該緩衝區不存在,他會為磁碟塊分配乙個緩衝區,將資料從...