最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)LeetCode(104.二叉樹的最大深度)

 更新時(shí)間:2021年07月21日 15:34:03   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(104.二叉樹的最大深度),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

[LeetCode] 104. Maximum Depth of Binary Tree 二叉樹的最大深度

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Note: A leaf is a node with no children.

Example:

Given binary tree [3,9,20,null,null,15,7],

    3
/ \
9  20
/  \
15   7

return its depth = 3.

求二叉樹的最大深度問題用到深度優(yōu)先搜索 Depth First Search,遞歸的完美應(yīng)用,跟求二叉樹的最小深度問題原理相同,參見代碼如下:

C++ 解法一:

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (!root) return 0;
        return 1 + max(maxDepth(root->left), maxDepth(root->right));
    }
};

Java 解法一:

public class Solution {
    public int maxDepth(TreeNode root) {
        return root == null ? 0 : (1 + Math.max(maxDepth(root.left), maxDepth(root.right)));
    }
}

我們也可以使用層序遍歷二叉樹,然后計(jì)數(shù)總層數(shù),即為二叉樹的最大深度,注意 while 循環(huán)中的 for 循環(huán)的寫法有個(gè) trick,一定要將 q.size() 放在初始化里,而不能放在判斷停止的條件中,因?yàn)閝的大小是隨時(shí)變化的,所以放停止條件中會(huì)出錯(cuò),參見代碼如下:

C++ 解法二:

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (!root) return 0;
        int res = 0;
        queue<TreeNode*> q{{root}};
        while (!q.empty()) {
            ++res;
            for (int i = q.size(); i > 0; --i) {
                TreeNode *t = q.front(); q.pop();
                if (t->left) q.push(t->left);
                if (t->right) q.push(t->right);
            }
        }
        return res;
    }
};

Java 解法二:

public class Solution {
    public int maxDepth(TreeNode root) {
        if (root == null) return 0;
        int res = 0;
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        while (!q.isEmpty()) {
            ++res;
            for (int i = q.size(); i > 0; --i) {
                TreeNode t = q.poll();
                if (t.left != null) q.offer(t.left);
                if (t.right != null) q.offer(t.right);
            }
        }
        return res;
    }
}

Github 同步地址:

https://github.com/grandyang/leetcode/issues/104

類似題目:

Balanced Binary Tree

Minimum Depth of Binary Tree

Maximum Depth of N-ary Tree

參考資料:

https://leetcode.com/problems/maximum-depth-of-binary-tree/

https://leetcode.com/problems/maximum-depth-of-binary-tree/discuss/34207/my-code-of-c-depth-first-search-and-breadth-first-search

到此這篇關(guān)于C++實(shí)現(xiàn)LeetCode(104.二叉樹的最大深度)的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)二叉樹的最大深度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于C++實(shí)現(xiàn)日期計(jì)算器的詳細(xì)教程

    基于C++實(shí)現(xiàn)日期計(jì)算器的詳細(xì)教程

    在現(xiàn)代社會(huì)中,計(jì)算器已經(jīng)進(jìn)入了每一個(gè)家庭,人們在生活和學(xué)習(xí)中經(jīng)常需要使用到計(jì)算器,下面這篇文章主要給大家介紹了關(guān)于基于C++實(shí)現(xiàn)日期計(jì)算器的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C語言實(shí)現(xiàn)簡單通訊錄

    C語言實(shí)現(xiàn)簡單通訊錄

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++的命名空間詳解

    C++的命名空間詳解

    這篇文章主要介紹了C++編程中的命名空間基本知識講解,包括對C++中內(nèi)聯(lián)命名空間新特性的介紹,需要的朋友可以參考下
    2021-09-09
  • Qt中布局管理的使用小結(jié)

    Qt中布局管理的使用小結(jié)

    Qt的布局管理系統(tǒng)提供了簡單而強(qiáng)大的機(jī)制,確保它們有效地使用空間,本文就介紹了Qt中布局管理的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • C++ 在堆上開辟與釋放二維、三維指針詳細(xì)解析

    C++ 在堆上開辟與釋放二維、三維指針詳細(xì)解析

    一維指針其實(shí)就相當(dāng)于一維數(shù)組,不用去看書上所說的數(shù)組在內(nèi)存中的首地址這些晦澀的話,以此類推 二維指針就相當(dāng)于二維數(shù)組,新手對一維數(shù)組的開辟與釋放比較容易熟悉
    2013-09-09
  • C++小知識:不要節(jié)約代碼行數(shù)

    C++小知識:不要節(jié)約代碼行數(shù)

    今天小編就為大家分享一篇關(guān)于C++小知識:不要節(jié)約代碼行數(shù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C++基于棧的深搜算法實(shí)現(xiàn)馬踏棋盤

    C++基于棧的深搜算法實(shí)現(xiàn)馬踏棋盤

    這篇文章主要為大家詳細(xì)介紹了C++基于棧的深搜算法實(shí)現(xiàn)馬踏棋盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C語言詳細(xì)講解指針數(shù)組的用法

    C語言詳細(xì)講解指針數(shù)組的用法

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個(gè)字符串,使字符串處理更加方便、靈活
    2022-05-05
  • C/C++語言宏定義使用實(shí)例詳解

    C/C++語言宏定義使用實(shí)例詳解

    這篇文章主要介紹了 C/C++語言宏定義使用實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C/C++中如何判斷某一文件或目錄是否存在

    C/C++中如何判斷某一文件或目錄是否存在

    以下文章是對C/C++中判斷某一文件或目錄是否存在的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07

最新評論

伊宁市| 金寨县| 宝山区| 武乡县| 海伦市| 连南| 巴塘县| 腾冲县| 兰西县| 阿城市| 沁水县| 新安县| 麦盖提县| 县级市| 容城县| 宣恩县| 定陶县| 洪泽县| 龙川县| 邵阳县| 东台市| 湖州市| 宾川县| 屯留县| 江口县| 兖州市| 余江县| 涟水县| 玛纳斯县| 大关县| 安庆市| 顺平县| 瑞昌市| 平潭县| 景东| 邯郸市| 黄山市| 桃园县| 唐河县| 苏州市| 平远县|