原创 LeetCode領釦 #100 相同的樹(Same Tree)

給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。 如果兩個樹在結構上相同,並且節點具有相同的值,則認爲它們是相同的。 示例 1: 輸入: 1 1 / \ / \

原创 LeetCode領釦 #104 二叉樹的最大深度(Maximum-Depth-Of-Binary-Tree)

給定一個二叉樹,找出其最大深度。 二叉樹的深度爲根節點到最遠葉子節點的最長路徑上的節點數。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9

原创 AVL樹的構造、插入和刪除(C++)

昨天搞了一個晚上,可算是把AVL樹的概念搞明白。而後又參閱了大量的博客和書籍,終於是自己搞了一套代碼(期間各種BUG搞得我欲仙欲死= =、)雖然考研可能不要求實現,但還是寫點東西,就算是自己總結一下吧。 AVL樹是一種BST(二叉搜索樹)

原创 構造中序線索二叉樹

主要是利用二叉樹的空指針域,若爲空,使左指針指向前驅,並標記ltag爲1;使右指針指向後驅,並標記rtag爲1; 要注意的是構造結束後,此時pre指向最後一個結點,此時需記得pre->right = nullptr, pre->rtag

原创 構造二叉排序樹(BST)+二叉排序樹的刪除

主要是刪除操作 二叉排序樹的刪除 1. 刪除葉結點,直接刪除 2. 刪除結點p只有左子樹或右子樹,讓其子樹替代該結點p即可 3. 刪除結點p既有左子樹又有右子樹,以該結點p爲根,查找中序遍歷下第一個結點t,使這個結點t替換p結點(val覆

原创 LeetCode領釦 #107 二叉樹的層次遍歷II(Binary-Tree-Level-Order-Traversal-II)

給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 /

原创 LeetCode領釦 #101 對稱二叉樹(Symmetric Tree)

給定一個二叉樹,檢查它是否是鏡像對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3

原创 用克魯斯卡爾(Kruskal)算法構造最小生成樹(最小支撐樹)

Kruskal算法和Prim算法相比,就是Kruskal算法從邊出發,不斷尋找當前未添加進Et的、且權值最小的邊,若添加後不形成環,則添加成功;否則跳過,繼續嘗試添加下一條邊。最後,判斷邊的數量arcnum是否是點的數量vexnum-1,

原创 使用鄰接矩陣+Dijkstra算法求解單源最短路徑問題

Dijkstra算法是求解有向非負帶權圖中某一結點到其它結點的最短路徑算法。這個算法和Prim算法求解最小生成樹有點相似,它也是先有一個初始頂點,然後查找最小帶權路徑。 不同的是,Prim需要更新最小生成樹的結點,不斷將結點更新到VT中,

原创 用鄰接矩陣+普里姆(Prim)算法構造最小生成樹(最小支撐樹)

首先什麼是最小生成樹(我的教材稱爲最小支撐樹)?它是一個圖的極小連通子圖。那什麼是圖?什麼是極小連通子圖? 圖是一種數據結構,由頂點集合V(非空)和邊集合E構成,記爲G=(V,E)。G即Graph圖,V即Vertex頂點,E即Edge邊。

原创 子樹問題

任務:對於給定的二叉樹,計算二叉樹各結點自己爲根時子樹的結點數,並按前序輸出 輸入:第1行有1正整數n,表示給定的二叉樹有n個頂點,編號爲1,2,3,...n。接下來n行中,每行有3個整數a,b,c,分別表示編號爲a的結點的左兒子編號爲b

原创 雙棧模擬隊列

棧是先進後出,隊列是先進先出,因此若想用棧保存數據(stack1)獲得正確的順序,就要把棧的順序反過來。可以把stack1中的數據逐個彈出至另外一個棧(stack2),這樣就可以達到正確的隊列順序了 值得注意的是,似乎在出隊後需要將sta

原创 層序列表問題(二叉樹的層次遍歷)

問題描述:對樹中結點按層序列表是指先列樹根,然後從左到右一次列出所有深度爲1的節點,再從做到右地列出深度爲2的節點,等等。層序列表問題要求對一顆給定的二叉樹按層序列表。 數據輸入:第一行爲一個整數n,表示給定的二叉樹有n個頂點。接下來的n

原创 二叉樹後序中序遍歷序列確定前序問題

任務:給定一顆有n個結點的二叉樹,結點的編號是1,2,3,...,n。已知二叉樹結點編號的後序和中序列表,試設計一個算法,確定該二叉樹結點編號的前序列表。 輸入:第1行有1個正整數n,表示給定的二叉樹有n個結點。接下來的兩行中,第1行是二

原创 多叉樹最近公共祖先問題(LCA)

任務:設計一個算法,對於給定的樹中兩結點,返回它們的最近公共祖先 輸入:第1行有一個正整數n,表示給定的樹有n個結點。結點編號爲1,2,3,...,n,編號爲1的頂點是樹根。接下來n行中,第i+1行描述了第i個結點的兒子情況。每行的第一個