這裡的二叉樹型別分別包含關鍵字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 標識的磁碟塊時,他首先在緩衝區快取中搜尋分配給磁碟塊的緩衝區。如果緩衝區中存在並且包含有效資料,那麼它只需要從緩衝區中讀取資料,而無需再次從磁碟中讀取資料塊。如果該緩衝區不存在,他會為磁碟塊分配乙個緩衝區,將資料從...