日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

559. N 叉树的最大深度

發布時間:2023/11/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 559. N 叉树的最大深度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

559. N 叉樹的最大深度

給定一個 N 叉樹,找到其最大深度。

最大深度是指從根節點到最遠葉子節點的最長路徑上的節點總數。

N 叉樹輸入按層序遍歷序列化表示,每組子節點由空值分隔(請參見示例)。

示例 1:

輸入:root = [1,null,3,2,4,null,5,6]

輸出:3

  • 示例 2:

輸入:root =
[1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]

輸出:5

提示:

  • 樹的深度不會超過?1000 。
  • 樹的節點數目位于 [0,?104] 之間。

解題思路

使用遞歸,每個遞歸函數返回的是以輸入參數root為根節點的子樹,所具有的最大深度。每次遞歸計算所有的子節點,得出子節點中的最大深度,然后加上當前節點的深度一,返回給上層調用。

代碼

/* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;} }; */class Solution { public:int maxDepth(Node* root) {if (root== nullptr) return 0;int res(0);for (auto c:root->children)res=max(maxDepth(c),res);return res+1;} };

時間復雜度:O(n)O(n)O(n),其中 n 為 N 叉樹節點的個數。每個節點在遞歸中只被遍歷一次。

空間復雜度:O(height)O(\textit{height})O(height),其中$ \textit{height}$ 表示 N 叉樹的高度。遞歸函數需要棧空間,而棧空間取決于遞歸的深度,因此空間復雜度等價于 N 叉樹的高度。

解題思路

利用隊列實現對N叉樹的層序遍歷,并且記錄下訪問到的最大的層數,就是最大深度

代碼

/* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;} }; */class Solution { public:int maxDepth(Node *root) {if (root == nullptr) return 0;int res(0);queue<Node *> q;q.push(root);while (!q.empty()) {int s = q.size();for (int i = 0; i < s; ++i) {Node *cur = q.front();q.pop();for (auto c:cur->children) {if (c != nullptr)q.push(c);}}res++;}return res;} };

總結

以上是生活随笔為你收集整理的559. N 叉树的最大深度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。