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

【LeetCode熱題100】--102.二叉樹(shù)的層序遍歷

這篇具有很好參考價(jià)值的文章主要介紹了【LeetCode熱題100】--102.二叉樹(shù)的層序遍歷。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

102.二叉樹(shù)的層序遍歷

【LeetCode熱題100】--102.二叉樹(shù)的層序遍歷,# 二叉樹(shù),leetcode,算法

廣度優(yōu)先搜索:

我們可以想到最樸素的方法是用一個(gè)二元組 (node, level) 來(lái)表示狀態(tài),它表示某個(gè)節(jié)點(diǎn)和它所在的層數(shù),每個(gè)新進(jìn)隊(duì)列的節(jié)點(diǎn)的 level 值都是父親節(jié)點(diǎn)的 level 值加一。最后根據(jù)每個(gè)點(diǎn)的 level 對(duì)點(diǎn)進(jìn)行分類,分類的時(shí)候我們可以利用哈希表,維護(hù)一個(gè)以 level 為鍵,對(duì)應(yīng)節(jié)點(diǎn)值組成的數(shù)組為值,廣度優(yōu)先搜索結(jié)束以后按鍵 level 從小到大取出所有值,組成答案返回即可。

考慮如何優(yōu)化空間開(kāi)銷:如何不用哈希映射,并且只用一個(gè)變量 node 表示狀態(tài),實(shí)現(xiàn)這個(gè)功能呢?

我們可以用一種巧妙的方法修改廣度優(yōu)先搜索:

  • 首先根節(jié)點(diǎn)入隊(duì)
  • 當(dāng)隊(duì)列不為空時(shí):
    • 求當(dāng)前隊(duì)列的長(zhǎng)度 s i s_i si?
    • 依次從隊(duì)列中取 s i s_i si?個(gè)元素進(jìn)行拓展,然后進(jìn)入下一次迭代

它和普通廣度優(yōu)先搜索的區(qū)別在于:普通廣度優(yōu)先搜索每次只取一個(gè)元素拓展,而這里每次取 s i s_i si?個(gè)元素文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-729050.html

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> ans = new ArrayList<List<Integer>>();
        if(root == null){
            return ans;
        } 
        //隊(duì)列是先進(jìn)先出
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);  //隊(duì)列中添加根節(jié)點(diǎn)
        while(!queue.isEmpty())
        {
            List<Integer> level = new ArrayList<Integer>();
            int currentLevelSize = queue.size();
            for(int i = 1;i<=currentLevelSize;i++){
                TreeNode node = queue.poll();
                level.add(node.val);
                //如果左節(jié)點(diǎn)不為空,隊(duì)列中先添加左節(jié)點(diǎn)
                if(node.left != null){
                    queue.offer(node.left);
                }
                if(node.right != null){
                    queue.offer(node.right);
                }
            }
            ans.add(level);
        }
        return ans;
    }
}

到了這里,關(guān)于【LeetCode熱題100】--102.二叉樹(shù)的層序遍歷的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

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

    2024年02月06日
    瀏覽(19)
  • 【C++】102.二叉樹(shù)的層序遍歷

    【C++】102.二叉樹(shù)的層序遍歷

    給你二叉樹(shù)的根節(jié)點(diǎn) root ,返回其節(jié)點(diǎn)值的 層序遍歷 。 (即逐層地,從左到右訪問(wèn)所有節(jié)點(diǎn))。 示例1: 示例 2: 示例 3: 提示: 樹(shù)中節(jié)點(diǎn)數(shù)目在范圍 [0, 2000] 內(nèi) -1000 = Node.val = 1000 這個(gè)問(wèn)題實(shí)際上可以只用一個(gè)隊(duì)列就實(shí)現(xiàn),只需要再增加一個(gè)變量 levelSize ,用來(lái)記錄每一層

    2024年03月11日
    瀏覽(20)
  • 每日一題 102二叉樹(shù)的層序遍歷

    給你二叉樹(shù)的根節(jié)點(diǎn) root ,返回其節(jié)點(diǎn)值的 層序遍歷 。 (即逐層地,從左到右訪問(wèn)所有節(jié)點(diǎn))。 示例 1: 輸入:root = [3,9,20,null,null,15,7] 輸出:[[3],[9,20],[15,7]] 示例 2: 輸入:root = [1] 輸出:[[1]] 示例 3: 輸入:root = [] 輸出:[] 提示: 樹(shù)中節(jié)點(diǎn)數(shù)目在范圍 [0, 2000] 內(nèi) -1000 =

    2024年02月09日
    瀏覽(22)
  • 每日一練:LeeCode-102、二又樹(shù)的層序遍歷【二叉樹(shù)】

    每日一練:LeeCode-102、二又樹(shù)的層序遍歷【二叉樹(shù)】

    本文是力扣LeeCode-102、二又樹(shù)的層序遍歷 學(xué)習(xí)與理解過(guò)程,本文僅做學(xué)習(xí)之用,對(duì)本題感興趣的小伙伴可以出門(mén)左拐LeeCode。 給你二叉樹(shù)的根節(jié)點(diǎn) root ,返回其節(jié)點(diǎn)值的 層序遍歷 。 ( 即逐層地,從左到右訪問(wèn)所有節(jié)點(diǎn) )。 示例 1: 輸入:root = [3,9,20,null,null,15,7] 輸出:[[3

    2024年01月21日
    瀏覽(22)
  • LeetCode.107. 二叉樹(shù)的層序遍歷 II

    LeetCode.107. 二叉樹(shù)的層序遍歷 II

    107. 二叉樹(shù)的層序遍歷 II 這個(gè)題目考查的是二叉樹(shù)的層序遍歷,對(duì)于二叉樹(shù)的層序遍歷,我們需要借助 隊(duì)列 這種數(shù)據(jù)結(jié)構(gòu)。再來(lái)回歸本題 ,我們只需要將 二叉樹(shù)的層序遍歷的結(jié)果逆序,就可以得到這道題我們要求的答案了。接下來(lái)我們的難題就是 如何實(shí)現(xiàn)二叉樹(shù)的層序遍

    2024年02月21日
    瀏覽(30)
  • leetcode做題筆記107. 二叉樹(shù)的層序遍歷 II

    leetcode做題筆記107. 二叉樹(shù)的層序遍歷 II

    給你二叉樹(shù)的根節(jié)點(diǎn)? root ?,返回其節(jié)點(diǎn)值? 自底向上的層序遍歷 ?。 (即按從葉子節(jié)點(diǎn)所在層到根節(jié)點(diǎn)所在的層,逐層從左向右遍歷) 本題要求二叉樹(shù)的層序遍歷,并且是從下至上的層序遍歷,可以考慮先按照從上至下的層序遍歷先將層序遍歷結(jié)果放到數(shù)組中,再對(duì)每層

    2024年02月11日
    瀏覽(26)
  • 【Py/Java/C++三種語(yǔ)言詳解】LeetCode每日一題240216【二叉樹(shù)BFS】LeetCode103、二叉樹(shù)的層序遍歷II

    【Py/Java/C++三種語(yǔ)言詳解】LeetCode每日一題240216【二叉樹(shù)BFS】LeetCode103、二叉樹(shù)的層序遍歷II

    有LeetCode交流群/華為OD考試扣扣交流群可加: 948025485 可上全網(wǎng)獨(dú)家的 歐弟OJ系統(tǒng) 練習(xí)華子OD、大廠真題 綠色聊天軟件戳 od1336 了解算法沖刺訓(xùn)練 LeetCode103、二叉樹(shù)的鋸齒形層序遍歷 給你二叉樹(shù)的根節(jié)點(diǎn) root ,返回其節(jié)點(diǎn)值的 鋸齒形層序遍歷 。(即先從左往右,再?gòu)挠彝筮M(jìn)

    2024年02月20日
    瀏覽(19)
  • leetcode熱題100. 二叉樹(shù)的最近公共祖先

    leetcode熱題100. 二叉樹(shù)的最近公共祖先

    Problem: 236. 二叉樹(shù)的最近公共祖先 給定一個(gè)二叉樹(shù), 找到該樹(shù)中兩個(gè)指定節(jié)點(diǎn)的最近公共祖先。 百度百科中最近公共祖先的定義為:“對(duì)于有根樹(shù) T 的兩個(gè)節(jié)點(diǎn) p、q,最近公共祖先表示為一個(gè)節(jié)點(diǎn) x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個(gè)節(jié)點(diǎn)也可以是它自己的祖先

    2024年01月19日
    瀏覽(19)
  • 41 二叉樹(shù)的層序遍歷

    41 二叉樹(shù)的層序遍歷

    給你二叉樹(shù)的根節(jié)點(diǎn) root ,返回其節(jié)點(diǎn)值的 層序遍歷 。 (即逐層地,從左到右訪問(wèn)所有節(jié)點(diǎn))。 提示: 樹(shù)中節(jié)點(diǎn)數(shù)目在范圍 [0, 2000] 內(nèi) -1000 = Node.val = 1000

    2024年02月07日
    瀏覽(23)
  • 二叉樹(shù)題目:二叉樹(shù)的層序遍歷 II

    二叉樹(shù)題目:二叉樹(shù)的層序遍歷 II

    標(biāo)題:二叉樹(shù)的層序遍歷 II 出處:107. 二叉樹(shù)的層序遍歷 II 4 級(jí) 要求 給你二叉樹(shù)的根結(jié)點(diǎn) root texttt{root} root ,返回其結(jié)點(diǎn)值自底向上的層序遍歷(即從左到右,按從葉結(jié)點(diǎn)所在層到根結(jié)點(diǎn)所在層逐層遍歷)。 示例 示例 1: 輸入: root ? = ? [3,9,20,null,null,15,7] texttt{root = [3

    2024年02月11日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包