基礎二叉樹

2022-05-02 05:21:07 字數 741 閱讀 9772

2020-02-23 

今天學了一下bst

有如下內容:

二叉樹的前序遍歷:根->左->右;

中序遍歷:左->根->右;

後序遍歷: 左->右->根;

層次遍歷:廣搜即可;

前序遍歷的第乙個節點為根節點;

後序遍歷的最後乙個節點為根節點;

利用中序遍歷可以得出每個節點的左右子樹;

因此,已知中序遍歷+前序遍歷//後序遍歷可得到整個樹;

但如果是bst,只需要知道前序或者後序即可,因為平衡二叉樹的特點,你找到了乙個根節點,那麼左子樹都比它小,右子樹都比它大;掃一遍前序遍歷的序列就可以得到乙個點的左右子樹情況,遞迴處理即可;

2020-02-23  22:27:28

今天學了一下堆,大概是這麼個東西;

你如果想造乙個優先佇列:那怎麼做呢?

如果用bst來做,每次查詢出優先順序最大的點,複雜度log(n),那這樣不斷的取出隊頭的元素,會把樹刪得亂七八糟,最後訪問可能就是o(n)的;那你說每次刪掉平衡一下可以嗎?有些麻煩;

考慮用完全二叉樹實現:

最大堆:根節點為最大值;

最小堆:根節點為最小值;

插入:每次隨便找個能放的位置放,然後調整,olog(n)的複雜度;

刪除:每次把根刪除,然後找個能放的子孫放進去,然後調整,log(n)

建立堆:就是給個序列,隨便建立乙個完全二叉樹,然後從下往上調整最終調整為堆,0(n),注意是邊建立,邊調整;

未完待續;

二叉樹基礎

二叉樹 二叉樹是一棵特殊的樹,二叉樹每個節點最多有兩個孩子結點,分別稱為左孩子和右孩子。二叉樹節點結構 二叉樹的建立 node createtree const t a,size t size,size t index,const t invilid return root 返回根節點 前序遍歷 前...

二叉樹基礎

最近學習的一些筆記,記錄一下 樹是一種非線性結構,樹 這種資料結構真的很像我們現實生活中的 樹 這裡面每個元素我們叫 節點 例如下面這幅圖,a 節點就是 b 節點的父節點,b 節點是 a 節點的子節點。b c d 這三個節點的父節點是同乙個節點,所以它們之間互稱為兄弟節點。我們把沒有父節點的節點叫作...

二叉樹基礎

1.二叉樹的定義 每個結點最多只有兩棵子樹 子樹左右有順序之分 2.常見的二叉樹型別 滿二叉樹 看起來 完美 而又 平衡 的樹 完全二叉樹 首先從上至下,從左至右按順序給結點編號,再從下至上,從右至左按順序刪除結點。由此可見滿二叉樹是一棵特殊的完全二叉樹,而完全二叉樹是 缺胳膊少腿 的滿二叉樹。3....