本節課主要介紹了一種資料結構——二叉搜尋樹
二叉搜尋樹的定義簡單來說,對於每乙個節點,其左子節點都比它小,右子節點都比它小
對二叉搜尋樹進行中序遍歷,即可得到序列的從小到大排序
對於相同資料的不同給定順序,構造的二叉搜尋樹高度會不一樣,最壞情況二叉搜尋樹的高度會達到n,此時時間複雜度為o(n^2),而一般情況下二叉樹平均高度為o(lgn),時間複雜度為o(nlogn),是不是讓人想到了快速排序?沒錯,二叉搜尋樹的排序在本質上和快速排序是一樣的,只是比較的順序不同而已,因此我們可以採用隨機化演算法,先將給定的資料打亂,然後再進行bst,這樣可以保證時間複雜度為o(nlgn)
既然二叉搜尋樹的bst排序和快速排序效率相同,那麼我們為什麼還要研究它呢?原因在於,本資料結構能夠支援更加快速的動態操作,諸如刪除、修改、插入等操作,具體實現方式請聽下回分解:-d
演算法導論 二叉搜尋樹
搜尋樹資料結構支援許多動態集合操作,包括search minimum maximum predecessor successor insert和delete等。因此,我們使用一棵搜尋樹既可以作為乙個字典又可以作為乙個優先佇列。二叉搜尋樹上的基本操作所花費的時間與這棵樹的高度成正比。對於乙個有n個結點...
演算法導論二叉搜尋樹
兩天寫完的,沒有認認真真的測試,可能有些bug,自己測試的資料能過,但是我的初始化有些問題,不知道該怎麼表示 二叉搜尋樹 include include using namespace std struct node void inorder search node root1 node tree ...
《演算法導論》筆記 二叉搜尋樹
演算法 資料結構 二叉搜尋樹 binary search tree 是經過一定地組織形成的有特定結構特徵的二叉樹,支援各種動態集合 dynamic set 操作 如insert delete maximum minimum等等 這些操作的時間複雜度與樹的高度成正比。一棵有n個節點的完全二叉樹 com...