原创 129:Sum Root to Leaf Numbers【樹】【DFS】

題目鏈接:click~ /*題意:給出一顆二叉樹,從根結點到葉子結點路徑上所有結點的值可以組成一個數 求這些數的和 */ /** *思路:DFS遍歷整棵樹,用num記錄以當前結點爲結尾的可以組成的數 * 當

原创 111:Minimum Depth of Binary Tree【樹】【DFS】

題目鏈接:click~ /*題意:求二叉樹的最小深度(從根結點到最近的葉子結點)*/ /** *思路:DFS遍歷整個樹,只需要葉子結點的到根的距離 * */ struct TreeNode { int val;

原创 113:Path Sum II【樹】【DFS】

題目鏈接:click~ /*題意:給出一顆樹和一個值sum,求樹中從根結點到葉子結點的所有路徑 且每條路徑上結點的和等於sum */ class Solution { public: void GetPa

原创 144:Binary Tree Preorder Traversal【樹】【棧】

題目鏈接:click~ 遞歸解法: /*題意:二叉樹的前序遍歷 */ class Solution { public: void PreOrderTraverse(TreeNode *T, vector<int> &v) {

原创 116:Populating Next Right Pointers in Each Node【樹】【DFS】

題目鏈接:click~ /*題意:f給定一個完全二叉樹,將每一層的結點連接起來,要求使用O(1)的空間*/ /** *思路:1)按層遍歷完全二叉樹,記錄每一層的第一個需要遍歷的結點。觀察發現, 下一層的第一個節點是

原创 102:Binary Tree Level Order Traversal【樹】【BFS】

題目鏈接:click~ 解法1: /*題意:將二叉樹中的結點一層一層的輸出*/ /** *思路:用兩個隊列,一個隊列保存當前層的結點,另一隊列保存下一層的結點。 * 當遍歷某層結點時,插入下一層的結點。 */ cla

原创 104:Maximum Depth of Binary Tree【樹】【DFS】

題目鏈接:click~ /*題意:求二叉樹的深度*/ class Solution { public: int maxDepth(TreeNode *root) { if(root == NULL) return

原创 173:Binary Search Tree Iterator【樹】【棧】

題目鏈接:click~ /*題意:實現BST迭代器類,next()函數返回下一個最小的結點,hasNext()判斷是否有下一個最小結點 要求O(1)的時間和O(h)的的複雜度,h爲樹的高度 */ /** *思路:nex

原创 99:Recover Binary Search Tree【樹】【DFS】

題目鏈接:click~ /*題意:二叉搜索樹種有兩個結點被調換,要求將它們找出來並恢復*/ /** *思路:中序遍歷二叉樹時,記錄第一次違反有序規則的兩個結點,這兩個結點中的 * 第一個結點一定是被調換的結點,但是不能確定

原创 200:Number of Islands【DFS】【BFS】

題目鏈接:click~ /*題意:給出一個二維0和1的矩陣,判斷有多少全是1的封閉區域*/ /** *思路:遍歷矩陣,遇到1時,以該點爲起始點,向四周做深度優先遍歷,遇到 * 1是,標記爲已訪問的狀態 * */ cl

原创 145:Binary Tree Postorder Traversal【樹】【棧】

題目鏈接:click~ /*題意:二叉樹的後序遍歷*/ class Solution { public: void PostOrderTraverse(TreeNode *T, vector<int> &v) {

原创 101:Symmetric Tree【樹】【DFS】

題目鏈接:click~ :解法1:隊列 /*題意:判斷一顆二叉樹是否是自己的鏡像*/ /** *思路: 只要保證根結點下的左子樹的每一層是右子樹的鏡像,此樹是自己的鏡像 * 我們利用兩個隊列分別記錄左右子樹的每一

原创 107:Binary Tree Level Order Traversal II【樹】【BFS】

題目鏈接:click~ /*題意:將二叉樹中的結點一層一層的逆序輸出*/ /** *思路:在102那道題的代碼上,直接將vector反轉即可 * */ class Solution { public: voi

原创 112:Path Sum【樹】【DFS】

題目鏈接:click~ /*題意:給出一顆樹和一個值sum,求樹中是否存在從根結點到葉子結點的一條路徑 使得這條路徑上結點的和等於sum */ class Solution { public: bool has

原创 98:Validate Binary Search Tree【樹】【DFS】

題目鏈接:click~ /*題意:判斷二叉樹是否是BST*/ /** *思路:中序遍歷整棵樹,記錄結點的前驅結點,當前結點大於前驅結點,返回false * */ class Solution { public: void