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

【LeetCode75】第三十九題 二叉樹的右視圖

這篇具有很好參考價值的文章主要介紹了【LeetCode75】第三十九題 二叉樹的右視圖。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

題目:

示例:

分析:

代碼:


題目:

【LeetCode75】第三十九題 二叉樹的右視圖,LeetCode75題解,算法,leetcode,c++,數(shù)據(jù)結(jié)構(gòu)

示例:

【LeetCode75】第三十九題 二叉樹的右視圖,LeetCode75題解,算法,leetcode,c++,數(shù)據(jù)結(jié)構(gòu)

分析:

題目給我們一棵二叉樹,讓我們返回站在二叉樹右邊從上到下看到的節(jié)點。

那實際上就是要我們對二叉樹進行層序遍歷,然后把每層的最右邊的一個節(jié)點拿出來。

所以問題實際上就是要我們對二叉樹進行層序遍歷,所以我們這邊介紹兩種層序遍歷的方法,分別是DFS和BFS,也就是深度優(yōu)先搜索和廣度優(yōu)先搜索。

首先是DFS深度優(yōu)先搜索,我們先定義一個空的二維數(shù)組,是用來存放層序遍歷的結(jié)果的。

我們對二叉樹進行先序遍歷,在遞歸遍歷的同時攜帶一個代表深度的參數(shù)。

如果存放結(jié)果的二維數(shù)組的size也就是里面一維數(shù)組的數(shù)量小于等于深度,那就是我們第一次碰到這一層的節(jié)點,我們就往二維數(shù)組的后面塞一個一維的空數(shù)組。

然后再根據(jù)深度來將當前節(jié)點的值塞到二維數(shù)組的某個一維數(shù)組里。

先序遍歷完畢,我們也就層序遍歷完畢了。

【LeetCode75】第三十九題 二叉樹的右視圖,LeetCode75題解,算法,leetcode,c++,數(shù)據(jù)結(jié)構(gòu)

這是DFS層序遍歷的方法。我個人認為比較簡單,不過層序遍歷最經(jīng)典的是BFS廣度優(yōu)先搜索,所以這邊我們也將一下BFS怎么層序遍歷。

我們拿一個隊列,首先先把跟節(jié)點塞進隊列里。

然后進入一個while循環(huán),只要隊列為空我們就退出循環(huán),在循環(huán)體里我們先給存層序遍歷的二維列表里塞一個空的一維列表,然后先記錄一下隊列的長度,然后再for循環(huán)隊列長度次數(shù),在for循環(huán)里再每次取出一個隊列里的節(jié)點,把節(jié)點的值塞進二維數(shù)組的最后一個一維數(shù)組里面。

再對節(jié)點做判斷,如果其左子樹不為空,就把左子節(jié)點塞進隊列里,如果其右子樹不為空,把右子節(jié)點再塞進去。

這樣就是每次我們只取二叉樹的一層節(jié)點,并且存住每層的節(jié)點值后,還把每個節(jié)點的子節(jié)點塞進了隊列,這樣隊列里就是下一層的節(jié)點了。

直到隊列為空,那么就表示層序遍歷完畢。

最終二維數(shù)組就是我們層序遍歷的結(jié)果。

【LeetCode75】第三十九題 二叉樹的右視圖,LeetCode75題解,算法,leetcode,c++,數(shù)據(jù)結(jié)構(gòu)

以上兩種方法都可以對二叉樹進行層序遍歷。而本題中,我們需要把每層的最右邊的節(jié)點返回出去,所以我們還需要取走二維數(shù)組里每個數(shù)組的最后一個元素。

代碼:

DFS層序遍歷

class Solution {
public:
    vector<vector<int>>cache;
    void find(TreeNode* root,int deep){
        if(root==nullptr) return;
        if(cache.size()<=deep) cache.push_back(vector<int>(0));
        cache[deep].push_back(root->val);
        find(root->left,deep+1);
        find(root->right,deep+1);
    }
    vector<int> rightSideView(TreeNode* root) {
        find(root,0);
        vector<int>res;
        for(auto&c:cache){
            res.push_back(*(c.end()-1));
        }
        return res;
    }
};

BFS層序遍歷?文章來源地址http://www.zghlxwxcb.cn/news/detail-682985.html

class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        if(root==nullptr) return {};
        vector<vector<int>>cache;
        queue<TreeNode*>q;
        q.push(root);
        while(!q.empty()){
            cache.push_back(vector<int>(0));
            int l=q.size();
            for(int i=0;i<l;i++){
                TreeNode* node=q.front();q.pop();
                cache.back().push_back(node->val);
                if(node->left) q.push(node->left);
                if(node->right) q.push(node->right);
            }
        }
        vector<int>res;
        for(auto& c:cache){
            res.push_back(*(c.end()-1));
        }
        return res;
    }
};

到了這里,關(guān)于【LeetCode75】第三十九題 二叉樹的右視圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    二叉樹(1): 深入理解數(shù)據(jù)結(jié)構(gòu)第一彈——二叉樹(1)——堆-CSDN博客 二叉樹(2): 深入理解數(shù)據(jù)結(jié)構(gòu)第二彈——二叉樹(2)——堆排序及其時間復(fù)雜度-CSDN博客 前言: 在前面我們講了堆及其應(yīng)用,幫助我們初步了解了二叉樹的一些原理,但那與真正的二叉樹仍有不同,

    2024年04月09日
    瀏覽(32)
  • 【Leetcode60天帶刷】day14二叉樹——144.二叉樹的前序遍歷,145.二叉樹的后序遍歷,94.二叉樹的中序遍歷

    【Leetcode60天帶刷】day14二叉樹——144.二叉樹的前序遍歷,145.二叉樹的后序遍歷,94.二叉樹的中序遍歷

    144. 二叉樹的前序遍歷 給你二叉樹的根節(jié)點? root ?,返回它節(jié)點值的? 前序 ? 遍歷。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 樹中節(jié)點數(shù)目在范圍? [0, 100] ?內(nèi) -100 = Node.val = 100 145. 二叉樹的后序遍歷 給你一棵二叉樹的根節(jié)點? root ?,返回其節(jié)點值的? 后序遍歷

    2024年02月10日
    瀏覽(33)
  • 【LeetCode】102. 二叉樹的層序遍歷、107. 二叉樹的層序遍歷 II

    【LeetCode】102. 二叉樹的層序遍歷、107. 二叉樹的層序遍歷 II

    ?作者:小盧 專欄:《Leetcode》 喜歡的話:世間因為少年的挺身而出,而更加瑰麗。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——《人民日報》 102. 二叉樹的層序遍歷 給你二叉樹的根節(jié)點? root ?,返回其節(jié)點值的? 層序遍歷 ?。 (即逐層地,從左到右訪問所有節(jié)點) ?示例:

    2024年02月13日
    瀏覽(23)
  • 二叉樹OJ題:LeetCode--104.二叉樹的最大深度

    二叉樹OJ題:LeetCode--104.二叉樹的最大深度

    朋友們、伙計們,我們又見面了,本期來給大家解讀一下LeetCode中第104道二叉樹OJ題,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成! 數(shù)據(jù)結(jié)構(gòu)與算法專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 個? 人? 主? 頁 ?: stackY、 C 語 言 專 欄 : C語言:從入門到精通 ?Leet

    2024年02月11日
    瀏覽(21)
  • LeetCode算法二叉樹—222. 完全二叉樹的節(jié)點個數(shù)

    LeetCode算法二叉樹—222. 完全二叉樹的節(jié)點個數(shù)

    目錄 222. 完全二叉樹的節(jié)點個數(shù) - 力扣(LeetCode) 代碼: 運行結(jié)果:? 給你一棵 ?完全二叉樹 ?的根節(jié)點? root ?,求出該樹的節(jié)點個數(shù)。 完全二叉樹?的定義如下:在完全二叉樹中,除了最底層節(jié)點可能沒填滿外,其余每層節(jié)點數(shù)都達到最大值,并且最下面一層的節(jié)點都集

    2024年02月07日
    瀏覽(30)
  • 【Leetcode -101.對稱二叉樹 -144.二叉樹的前序遍歷】

    【Leetcode -101.對稱二叉樹 -144.二叉樹的前序遍歷】

    題目:給你一個二叉樹的根節(jié)點 root , 檢查它是否軸對稱。 示例 1: 輸入:root = [1, 2, 2, 3, 4, 4, 3] 輸出:true 示例 2: 輸入:root = [1, 2, 2, null, 3, null, 3] 輸出:false 提示: 樹中節(jié)點數(shù)目在范圍[1, 1000] 內(nèi) 100 = Node.val = 100 思路 :化為子問題比較左子樹和右子樹是否對稱;結(jié)束條

    2024年02月09日
    瀏覽(19)
  • 二叉樹OJ題:LeetCode--144.二叉樹的前序遍歷

    二叉樹OJ題:LeetCode--144.二叉樹的前序遍歷

    朋友們、伙計們,我們又見面了,本期來給大家解讀一下LeetCode中第144道二叉樹OJ題,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成! 數(shù)據(jù)結(jié)構(gòu)與算法專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 個? 人? 主? 頁 ?: stackY、 C 語 言 專 欄 : C語言:從入門到精通 ?Leet

    2024年02月13日
    瀏覽(24)
  • leetcode543--二叉樹的直徑

    1. 題意 求二叉樹上最遠兩個節(jié)點之間的距離。 2. 題解 2.1 暴力 最長路徑的三種情況 通過根節(jié)點 在左子樹 在右子樹 通過根節(jié)點的最長路徑長度一定是左右子樹深度之和。 但是這樣求左右子樹的深度會不斷重復(fù),所以復(fù)雜度很高。 2.2 動態(tài)規(guī)劃 我們可以在求深度的時候,更新

    2024年04月26日
    瀏覽(18)
  • LeetCode:二叉樹的前、中、后序遍歷——如何創(chuàng)建一棵【二叉樹】

    LeetCode:二叉樹的前、中、后序遍歷——如何創(chuàng)建一棵【二叉樹】

    ??道阻且長,行則將至。?? ??算法,不如說它是一種思考方式?? 算法專欄: ????123 二叉樹是一種樹形數(shù)據(jù)結(jié)構(gòu),其每個節(jié)點 最多只有兩個子節(jié)點 。通常將節(jié)點分為三種類型:根節(jié)點、內(nèi)部節(jié)點和葉子節(jié)點。其中,根節(jié)點是二叉樹的唯一訪問起點,內(nèi)部節(jié)點具有一個父

    2023年04月09日
    瀏覽(20)
  • 代碼隨想錄 Day13 二叉樹 LeetCode T104 二叉樹的最大深度 T111 二叉樹的最小深度 T222完全二叉樹的節(jié)點個數(shù)

    代碼隨想錄 Day13 二叉樹 LeetCode T104 二叉樹的最大深度 T111 二叉樹的最小深度 T222完全二叉樹的節(jié)點個數(shù)

    以下題解的更詳細思路來自于:代碼隨想錄 (programmercarl.com) 二叉樹的高度與深度 這里先補充一下二叉樹深度和高度的概念 高度:二叉樹中任意一個節(jié)點到葉子結(jié)點的距離 深度:二叉樹中任意一個節(jié)點到根節(jié)點的距離 下面給出一個圖便于理解 獲取高度與深度的遍歷方式 高度:后

    2024年02月08日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包