樹與二叉樹

2021-06-29 07:17:00 字數 1342 閱讀 3162

建立:

先序二叉樹,中序二叉樹,後序二叉樹。

給定兩種遍歷序列(前序中序或後序中序),重塑二叉樹

遍歷:

判斷乙個節點是否存在於二叉樹中

二叉樹的遍歷(先序,中序,後序)遞迴/非遞迴

層次遍歷(從上到下或從下到上列印)

zigzag遍歷方式層次遍歷

二叉樹性質:

二叉樹中葉子節點的個數

二叉樹第k層節點數目

二叉樹高度、最小高度

樹的判斷

判斷兩個樹結構是否相同

判斷樹是否對稱

判斷二叉樹是否為完全二叉樹

判斷乙個樹是否是另乙個樹的子結構

pathsum問題

從根節點開始找到所有路徑,使得路徑上的節點值和為某一數值(路徑不一定以葉子節點結束)並列印路徑。

從根節點開始找到所有路徑,使得路徑上的節點值和為某一數值(路徑以葉子節點結束),並列印路徑。

從任意乙個節點起到任意節點的最大路徑值。

另類規定的所有路徑和。

二叉樹轉換成其他結構

將二叉樹變為鍊錶

將二叉樹同層節點相連(完全/普通)

其他操作:

二叉樹的映象(交換二叉樹左右兒子)

求兩個節點的最近公共祖先

求二叉樹中相距最遠的兩個節點

構建

給定n, 構建最大值為n的二叉查詢樹(種類,列印樹的結構)

將乙個有序整數陣列變成平衡二叉查詢樹

將乙個有序鍊錶變成為平衡二叉查詢樹

二叉查詢樹的兩個元素被交換,不改變樹的結構重塑

判斷

判斷給定樹是否為二叉查詢樹

判斷整數序列是不是二叉搜尋樹的後序遍歷結果

其他操作

將二叉搜尋樹轉變為排序的雙向鍊錶

實現二叉查詢樹的iterator

f=(最大值+最小值)/2,設計乙個演算法,找出距離f值最近,大於f值得節點。

判斷是否為平衡二叉樹

紅黑樹

比較二叉排序樹、二叉平衡樹以及紅黑樹

stl中map、set等都是用這種資料結構實現的

高階話題:怎樣增刪改查(各種旋轉實現)

trie字典樹

huffman樹

線段樹

樹狀陣列

b-樹、b+樹、b*樹

二叉樹 滿二叉樹與完全二叉樹

二叉樹 binary tree 是n n 0 個元素的有限集合,該集合為空或者為由乙個稱為 根 的元素及兩個不相交的 被分別稱為左子樹和右子樹的二叉樹組成 二叉樹的基本特點 每個結點最多有兩棵子樹 左子樹和右子樹是有順序的,且不可顛倒 圖一1 結點 二叉樹中的每乙個元素都稱為結點。通常二叉樹的許多名...

樹與二叉樹

樹是一類重要的非線性資料結構,是以分支關係定義的層次結構 定義 樹 tree 是n n 0 個結點的有限集t,其中 n 0時為空樹 n 0時,有且僅有乙個特定的結點,稱為樹的根 root 當n 1時,其餘結點可分為m m 0 個互不相交的有限集t1,t2,tm,其中每乙個集合本身又是一棵樹,稱為根的...

樹與二叉樹

如圖所示 左邊就是乙個傳統的樹結構,右邊是乙個二叉樹。為何要有二叉樹呢?這是一種對傳統樹對表示方式,是為了便於程式對設計與實現。從左右兩個樹可以看到,任何形式對樹,都可以使用二叉樹來表示。這樣,通過 兒子 兄弟節點 這樣都資料結構,就可以表示二叉樹的每個節點。通過這樣的乙個45度的旋轉,又可以將二叉...