国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

代碼隨想錄額外題目| 二叉樹 ●129求根到葉數(shù)字之和 ●1382二叉樹變平衡●100相同的樹

這篇具有很好參考價值的文章主要介紹了代碼隨想錄額外題目| 二叉樹 ●129求根到葉數(shù)字之和 ●1382二叉樹變平衡●100相同的樹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

#129求根到葉數(shù)字之和

回溯放進vector,然后從后往前拿,乘1 10 100 ... 很基礎的回溯

my code:

    void backtrack(int depth, TreeNode* cur, vector<TreeNode*> &vec, int &sum){
        if(cur->left==nullptr &&cur->right==nullptr){
            size_t a=1;
            for(int i=vec.size()-1;i>=0;i--){
                sum+=vec[i]->val*a;
                a*=10;
            }
        
            return;
        }
        if(cur->left){
            vec.push_back(cur->left);
            backtrack(depth+1,cur->left, vec, sum);
            vec.pop_back();
        }
        if(cur->right){
            vec.push_back(cur->right);
            backtrack(depth+1,cur->right,vec, sum);
            vec.pop_back();
        }
    }

    int sumNumbers(TreeNode* root) {
        int sum=0;
        vector<TreeNode*> vec={root};
        
        backtrack(1,root,vec,sum);
        return sum;
    }

隨想錄跟我思路差不多,但這兩個是放globa的:int result; vector<int> path; 最近總覺得global不安全不想放?

#1382二叉樹變平衡

本來遇到這種會換root的就頭疼,然后看了眼隨想錄,是要先變成vec,再從vec重構,就會了

mycode:

    vector<int> vec;

    void inorder(TreeNode* node){
        if(node==nullptr) return;
        inorder(node->left);
        vec.push_back(node->val);
        inorder(node->right);
    }

    TreeNode* build_tree(int start, int end){
        if(start>end) return nullptr;
        TreeNode* root= new TreeNode();
        int mid=(start+end)/2;
        int val=vec[mid];
        root->val=val;
        root->left=build_tree(start, mid-1);
        root->right=build_tree(mid+1, end);
        return root;
    }

    TreeNode* balanceBST(TreeNode* root) {
        inorder(root);
        return build_tree(0,vec.size()-1);
     
    }

#100相同的樹 easy

以任何方式遍歷比較即可:和隨想錄一模一樣文章來源地址http://www.zghlxwxcb.cn/news/detail-620210.html

    bool traverse(TreeNode* n1, TreeNode* n2){
        if(n1==nullptr && n2==nullptr) return true;
        if(n1==nullptr && n2) return false;
        if(n1 && n2==nullptr) return false;
        if(n1->val!=n2->val) return false;
        
        return traverse(n1->left, n2->left) && traverse(n1->right, n2->right);
    }

    bool isSameTree(TreeNode* p, TreeNode* q) {
        return traverse(p,q);
        
    }

到了這里,關于代碼隨想錄額外題目| 二叉樹 ●129求根到葉數(shù)字之和 ●1382二叉樹變平衡●100相同的樹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 代碼隨想錄 二叉樹 Java(二)

    代碼隨想錄 二叉樹 Java(二)

    采用前序遍歷的方式遍歷該二叉樹,然后統(tǒng)計該二叉樹的節(jié)點個數(shù) 這種方式比較簡單,但是沒有利用題目中所給的完全二叉樹這一信息 官方思路:二分查找+位運算 對于任意二叉樹,都可以通過廣度優(yōu)先搜索或深度優(yōu)先搜索計算節(jié)點個數(shù),時間復雜度和空間復雜度都是O(n),

    2024年02月08日
    瀏覽(24)
  • 代碼隨想錄二刷 |二叉樹 | 二叉樹的右視圖

    代碼隨想錄二刷 |二叉樹 | 二叉樹的右視圖

    199.二叉樹的右視圖 給定一個二叉樹的 根節(jié)點 root,想象自己站在它的右側(cè),按照從頂部到底部的順序,返回從右側(cè)所能看到的節(jié)點值。 示例 1: 輸入: [1,2,3,null,5,null,4] 輸出: [1,3,4] 示例 2: 輸入: [1,null,3] 輸出: [1,3] 示例 3: 輸入: [] 輸出: [] 提示: 二叉樹的節(jié)點個數(shù)的范圍是 [0,1

    2024年02月04日
    瀏覽(96)
  • 跟著《代碼隨想錄刷題》(六)—— 二叉樹

    跟著《代碼隨想錄刷題》(六)—— 二叉樹

    LeetCode:114、二叉樹的前序遍歷 (1)遞歸法 (2)迭代法 (3)統(tǒng)一迭代格式 LeetCode:94、二叉樹的中序遍歷 (1)遞歸法 (2)迭代法 (3)統(tǒng)一迭代格式 LeetCode:145、二叉樹的后序遍歷 (1)遞歸法 (2)迭代法 (3)統(tǒng)一迭代格式 LeetCode:589、N叉樹前序遍歷 LeetCode:590、N叉

    2024年02月09日
    瀏覽(67)
  • 代碼隨想錄day13 | 226.翻轉(zhuǎn)二叉樹 101.對稱二叉樹

    代碼隨想錄day13 | 226.翻轉(zhuǎn)二叉樹 101.對稱二叉樹

    使用前、后序反轉(zhuǎn)最為方便。 為啥不推薦中序? 中序遍歷,某些節(jié)點的左右孩子會翻轉(zhuǎn)兩次,某些節(jié)點左右孩子不會被反轉(zhuǎn)。 101.對稱二叉樹 關鍵在于,看這個節(jié)點對應的左子樹和右子樹是否可以相互反轉(zhuǎn)。 1、如何比較呢? 比較的是兩個子樹的里側(cè)和外側(cè)的元素是否相等

    2024年02月15日
    瀏覽(25)
  • 1月3日代碼隨想錄反轉(zhuǎn)二叉樹

    1月3日代碼隨想錄反轉(zhuǎn)二叉樹

    給你一棵二叉樹的根節(jié)點? root ?,翻轉(zhuǎn)這棵二叉樹,并返回其根節(jié)點。 示例 1: 示例 2: 示例 3: 提示: 樹中節(jié)點數(shù)目范圍在? [0, 100] ?內(nèi) -100 = Node.val = 100 這道題用遞歸的思想就是將根節(jié)點的左右兒子交換,然后再對子節(jié)點進行遞歸操作,直到子節(jié)點均為空。 但是我感覺

    2024年02月03日
    瀏覽(23)
  • 代碼隨想錄day21(2)二叉樹:二叉樹的所有路徑(leetcode257)

    代碼隨想錄day21(2)二叉樹:二叉樹的所有路徑(leetcode257)

    題目要求:按任意順序返回所有從根節(jié)點到葉節(jié)點的路徑 思路:我們先遞歸地進行前序遍歷,同時要注意回溯的過程,注意一些庫的用法即可。 leetcode實戰(zhàn): 代碼實現(xiàn):

    2024年03月18日
    瀏覽(52)
  • 【Day22-慢就是快】代碼隨想錄-二叉樹-迭代遍歷

    【Day22-慢就是快】代碼隨想錄-二叉樹-迭代遍歷

    用迭代法實現(xiàn)二叉樹的前后中序遍歷。 遞歸的實現(xiàn)就是:每一次遞歸調(diào)用都會把函數(shù)的局部變量、參數(shù)值和返回地址等壓入調(diào)用棧中 ,然后遞歸返回的時候,從棧頂彈出上一次遞歸的各項參數(shù),所以這就是遞歸為什么可以返回上一層位置的原因。 此時大家應該知道我們用棧

    2024年02月10日
    瀏覽(29)
  • 【代碼隨想錄day21】二叉樹的最近公共祖先

    【代碼隨想錄day21】二叉樹的最近公共祖先

    給定一個二叉樹, 找到該樹中兩個指定節(jié)點的最近公共祖先。 百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個節(jié)點 p、q,最近公共祖先表示為一個節(jié)點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節(jié)點也可以是它自己的祖先)?!?這題的難點在于: 如何建

    2024年02月15日
    瀏覽(25)
  • 【代碼隨想錄day19】從前序與中序遍歷序列構造二叉樹

    【代碼隨想錄day19】從前序與中序遍歷序列構造二叉樹

    使用遞歸建樹,流程如下: 取出后序節(jié)點創(chuàng)建新樹的節(jié)點 找到新樹的節(jié)點在中序中的索引 分割中序序列 分割后序序列 繼續(xù)遞歸建立整顆新樹

    2024年02月15日
    瀏覽(24)
  • 代碼隨想錄Day12 二叉樹 LeetCode T102二叉樹的層序遍歷 T226 翻轉(zhuǎn)二叉樹 T101 對稱二叉樹

    代碼隨想錄Day12 二叉樹 LeetCode T102二叉樹的層序遍歷 T226 翻轉(zhuǎn)二叉樹 T101 對稱二叉樹

    本文思路和詳細講解來自于:代碼隨想錄 (programmercarl.com) 題目鏈接:102. 二叉樹的層序遍歷 - 力扣(LeetCode) 本題使用隊列輔助完成,講解主要函數(shù)CheckOrder:首先判斷root是否為空,是就直接返回,然后創(chuàng)建隊列,向里加入root元素,計算隊列的長度,也就是每一層的元素個數(shù),while循環(huán),si

    2024年02月06日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包