計蒜客課程競賽入門 二叉搜尋樹 流程記

2022-09-20 03:18:08 字數 516 閱讀 5732

細心的你應該發現了,二叉搜尋樹的每個節點都要比左邊的子孫節點的值要大,比右邊的要小。二叉搜尋樹的中序遍歷就是將整棵樹按從小到大的順序輸出。是不是很神奇^o^

如何在二叉搜尋樹中查詢某個元素呢?首先從根出發,如果和根的值相等,則返回根,否則如果比根小就去左孩子,如果比根大就去右孩子,依次遞迴進行,直到找到值或者找不到返回空。

那麼插入操作呢?緊接著上面的查詢演算法,在查詢失敗的時候插入到對應的位置即可。

刪除操作會複雜一些,演算法如下:

如果沒有兒子:直接刪除;

如果只有乙個兒子:刪除後將兒子放在該節點的位置;

有兩個兒子:需要從右子樹中找到其中的最小值並刪除,並將最小值賦值給當前待刪除節點。如下圖所示:

另外還有線段樹,並查集.

計蒜客課程競賽入門 堆排序 流程記

堆實際上是一顆二叉樹,對於大根堆來說,它的特點就是父節點的值大於所有子節點的值。c 的stl中priority queue已經幫我們實現好了堆的資料結構,接下來我們一起學習並實踐如何實現乙個堆並用堆進行排序。priority queue是stl的queue這個標頭檔案中定義的資料結構,因此需要額外引...

牛客網 二叉搜尋樹 二叉搜尋樹複習

判斷兩序列是否為同一二叉搜尋樹序列 輸入描述 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序...

二叉搜尋樹的實現(參考 《挑戰程式設計競賽》)

二叉搜尋樹的實現 使用 node root null root insert root,1 find root,1 實現 struct node 表示節點的結構體 node insert node p,int x 插入數值x else bool find node p,int x 查詢數值x nod...