原创 LeetCode 951. 翻轉等價二叉樹(遞歸的解法)

翻轉等價二叉樹 看到二叉樹,就想到遞歸 這個題目判斷是否翻轉等價二叉樹,就遞歸地向下判斷即可。 遞歸式: 兩棵樹的根節點值相同,左左等價且右右等價,或者左右等價且右左等價。 遞歸終點: 兩根節點全爲空或有一個爲空、一個不爲空。 /

原创 LeetCode 919. 完全二叉樹插入器 (層次遍歷)

完全二叉樹插入器 思路: 先用層次遍歷獲得整棵樹的節點,存在vector<TreeNode*> tree裏面,然後即將插入的元素的序號就是tree.size()+1,然後獲取父親節點的序號,再分左右插入即可。 /** * Def

原创 LeetCode 1145. 二叉樹着色遊戲(樹的遍歷、樹的連通塊、統計節點數目)

二叉樹着色遊戲 假如說圖中的灰色的②號節點就是一號玩家選擇的點,那麼二號玩家儘可能有利的選擇是它的 左右子節點或者父節點。 那麼如果二號玩家想要獲勝,必須佔領左邊,右邊、其他部分的所有節點,而且這部分節點的數目要超過一半。 用後序

原创 LeetCode 662. 二叉樹最大寬度(層次遍歷、節點編號、如何解決數字溢出)

二叉樹最大寬度 這題有一個比較噁心的地方,如果這棵樹很深,節點編號就會爆炸性增長,基本數據類型肯定存不下,有評論說用double存,肯定是不可以的,精度喪失了,只不過題給數據太弱。 怎麼辦呢,由於題目保證最終答案一定在int範圍內

原创 LeetCode 211. 添加與搜索單詞 - 數據結構設計 (字典樹實現,回溯查詢)

添加與搜索單詞 用字典樹實現就不說了,主要說一下如何查詢..ab..這樣的模糊的字符串。 簡單的方法就是回溯,因爲.匹配所有字符,所以對所有字符一一搜索,失敗就回溯,正確就返回。 這題用字典樹可能不是最恰當的,以後再說吧 clas

原创 LeetCode 671. 二叉樹中第二小的節點(水題,注意一下數據類型)

二叉樹中第二小的節點 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *

原创 LeetCode 199. 二叉樹的右視圖(層次遍歷)

二叉樹的右視圖 層次遍歷二叉樹,取出每層的最後一個元素。 /** * Definition for a binary tree node. * struct TreeNode { * int val; *

原创 LeetCode 面試題54. 二叉搜索樹的第k大節點 (二叉搜索樹的中序遍歷)

二叉搜索樹的第k大節點 利用了二叉搜索樹的性質: 中序遍歷是升序的。 /** * Definition for a binary tree node. * struct TreeNode { * int val;

原创 LeetCode 14. 最長公共前綴(字典序、前綴樹、暴力)

字典序、快排 一種很巧妙的做法,雖然時間複雜度有點高。 通過排序,只要比較一前一後兩個字符串即可,這個兩個字符串有的前綴,那麼中間的所有字符串也都有這樣的前綴。 class Solution { public: str

原创 LeetCode 543. 二叉樹的直徑 (遞歸、求二叉樹的深度)

二叉樹的直徑 思路①: 這種寫法完全是基於遞歸的想法: 路徑如果經過根節點,最長路徑應該是左右子樹高度之和。 如果不經過,那麼去看如果經過左子樹的跟、經過右子樹的根的最長長度。(相同問題,遞歸解決) 不過,這種寫法有很多冗餘的遍

原创 LeetCode 1161. 最大層內元素和(二叉樹的層序遍歷)

最大層內元素和 這裏用了一個小技巧,就是map<int,int>的鍵是按升序的。 /** * Definition for a binary tree node. * struct TreeNode { * int

原创 LeetCode 958. 二叉樹的完全性檢驗(二叉樹基礎之完全二叉樹)

二叉樹的完全性檢驗 主要就是完全二叉樹的定義: ① 除了最後一層節點數全滿; ② 最後一層節點靠左。 /** * Definition for a binary tree node. * struct TreeNode {

原创 LeetCode 997. 找到小鎮的法官(出度、入度)

實際上此題,就是判斷這個圖裏面有沒有一個點的出度爲0,入度爲n-1。 class Solution { public: int findJudge(int N, vector<vector<int>>& trust) {

原创 LeetCode 208. 實現 Trie (前綴樹)字典樹(前綴樹、Trie)

實現 Trie 具體地可以看這篇博客: 字典樹入門 版本1: class Trie { public: /** Initialize your data structure here. */ Trie() {

原创 LeetCode 841. 鑰匙和房間(簡單圖論題、深搜判斷圖的連通塊)

鑰匙和房間 class Solution { public: unordered_set<int> vis; int n; bool canVisitAllRooms(vector<vector<int>>