建立:
先序二叉樹,中序二叉樹,後序二叉樹。
給定兩種遍歷序列(前序中序或後序中序),重塑二叉樹
遍歷:
判斷乙個節點是否存在於二叉樹中
二叉樹的遍歷(先序,中序,後序)遞迴/非遞迴
層次遍歷(從上到下或從下到上列印)
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度的旋轉,又可以將二叉...