429. N 叉樹的層序遍歷

429. N 叉樹的層序遍歷

給定一個 N 叉樹,返回其節點值的層序遍歷。(即從左到右,逐層遍歷)。

樹的序列化輸入是用層序遍歷,每組子節點都由 null 值分隔(參見示例)。

- 示例 1:輸入:root = [1,null,3,2,4,null,5,6]
輸出:[[1],[3,2,4],[5,6]]- 示例 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]
輸出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

提示:

  • 樹的高度不會超過?1000
  • 樹的節點總數在?[0,?10^4]?之間

解題思路

我們使用隊列實現層序遍歷,因為如果使用 ArrayList 的話,我們刪除元素需要 O(n) 的時間復雜度。而隊列刪除元素只需要 O(1)的時間。

并且在while?循環體開始時記錄隊列的當前大小?size。然后用另一個循環來處理?size?數量的節點,這樣我們就可以保證我們每次使隊列出隊的都是位于同一層的節點,并且后面入隊的節點也全是位于當前層的下一層,保證?了while?循環在每一次迭代處理一層。而傳統層序遍歷是加入左右節點的,而這個題目里面我們是需要加入一個list的子節點,所以我們需要再使用一個循環把整個list的子節點入隊。

代碼

/*
// Definition for a Node.
class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};
*/class Solution {public List<List<Integer>> levelOrder(Node root) {Queue<Node>queue=new LinkedList<>();queue.add(root);List<List<Integer>> res=new ArrayList<>(); if(root==null) return res;while(!queue.isEmpty()){int size=queue.size();List<Integer> list=new ArrayList<>();for(int i=0;i<size;i++){Node node=queue.poll();list.add(node.val);for(Node cur:node.children)queue.add(cur);}res.add(list);}return res;}
}
  • 時間復雜度:O(n)。n?指的是節點的數量。
  • 空間復雜度:O(n)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390205.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390205.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390205.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

javascript如何阻止事件冒泡和默認行為

阻止冒泡&#xff1a; 冒泡簡單的舉例來說&#xff0c;兒子知道了一個秘密消息&#xff0c;它告訴了爸爸&#xff0c;爸爸知道了又告訴了爺爺&#xff0c;一級級傳遞從而以引起事件的混亂&#xff0c;而阻止冒泡就是不讓兒子告訴爸爸&#xff0c;爸爸自然不會告訴爺爺。下面的d…

89. Gray Code - LeetCode

為什么80%的碼農都做不了架構師&#xff1f;>>> Question 89. Gray Code Solution 思路&#xff1a; n 0 0 n 1 0 1 n 2 00 01 10 11 n 3 000 001 010 011 100 101 110 111 Java實現&#xff1a; public List<Integer> grayCode(int n) {List&…

400. 第 N 位數字

400. 第 N 位數字 在無限的整數序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 位數字。 注意&#xff1a;n 是正數且在 32 位整數范圍內&#xff08;n < 231&#xff09;。 示例 1&#xff1a; 輸入&#xff1a;3 輸出&#xff1a;3 示例 2&#xff1a; 輸入&…

1.初識Linux

1.Linux 區分大小寫 2.shell命令行-bash 進入終端->[stulocalhost~]$ (其中,Stu為登錄用戶名&#xff0c;localhost為登錄主機名&#xff0c;’~’ 表示當前用戶正處在stu用戶的家目錄中, 普通用戶的提示符以$結尾&#xff0c;而根用戶以’#’結尾) 3.Linux中所謂的命令(…

這份NLP研究進展匯總請收好,GitHub連續3天最火的都是它

最近&#xff0c;有一份自然語言處理 (NLP) 進展合輯&#xff0c;一發布就受到了同性交友網站用戶的瘋狂標星&#xff0c;已經連續3天高居GitHub熱門榜首位。 合集里面包括&#xff0c;20多種NLP任務前赴后繼的研究成果&#xff0c;以及用到的數據集。 這是來自愛爾蘭的Sebasti…

基于模型的嵌入式開發流程_如何使用基于模型的測試來改善工作流程

基于模型的嵌入式開發流程Unit testing is not enough – so lets start using model-based testing to improve our workflows.單元測試還不夠–因此&#xff0c;讓我們開始使用基于模型的測試來改善我們的工作流程。 Software testing is an important phase in building a …

166. 分數到小數

166. 分數到小數 給定兩個整數&#xff0c;分別表示分數的分子 numerator 和分母 denominator&#xff0c;以 字符串形式返回小數 。 如果小數部分為循環小數&#xff0c;則將循環的部分括在括號內。 如果存在多個答案&#xff0c;只需返回 任意一個 。 對于所有給定的輸入…

最近用.NET實現DHT爬蟲,全.NET實現

最近用.NET實現DHT爬蟲&#xff0c;全.NET實現&#xff0c;大家可以加我QQ交流下 309159808 轉載于:https://www.cnblogs.com/oshoh/p/9236186.html

C++貪吃蛇

動畫鏈接 GitHub鏈接&#xff1a;https://github.com/yanpeng1314/Snake 1 #include "Snake.h"2 3 int iScore 0;4 int iGrade 1;5 6 //蛇頭蛇尾初始位置7 int x_head 1, y_head 3;8 int x_tail 1, y_tail 1;9 10 //地圖坐標11 int i_Map 1, j_Map 1;12 13 /…

遠程辦公招聘_招聘遠程人才時要尋找的5種技能

遠程辦公招聘Remote work is a fast emerging segment of the labor market. How to embrace this shift as an employer - and find, recruit, and empower remote staff - is a question many companies and hiring managers are grappling with.遠程工作是勞動力市場中快速崛…

10分鐘騰訊云配置免費https

騰訊云免費證書申請地址&#xff1a; https://console.cloud.tencent... 填寫相關信息 域名身份驗證 文件驗證 將fileauth.text 創建在網站訪問根目錄的 .well-known/pki-validation/目錄使得 www.**.com/.well-known/pki-validation/fileauth.text 能夠訪問詳情 等待5分鐘左右…

1588. 所有奇數長度子數組的和

1588. 所有奇數長度子數組的和 給你一個正整數數組 arr &#xff0c;請你計算所有可能的奇數長度子數組的和。 子數組 定義為原數組中的一個連續子序列。 請你返回 arr 中 所有奇數長度子數組的和 。 示例 1&#xff1a; 輸入&#xff1a;arr [1,4,2,5,3] 輸出&#xff1…

洛谷P3195 [HNOI2008]玩具裝箱TOY(單調隊列優化DP)

題目描述 P教授要去看奧運&#xff0c;但是他舍不下他的玩具&#xff0c;于是他決定把所有的玩具運到北京。他使用自己的壓縮器進行壓縮&#xff0c;其可以將任意物品變成一堆&#xff0c;再放到一種特殊的一維容器中。P教授有編號為1...N的N件玩具&#xff0c;第i件玩具經過壓…

680. 驗證回文字符串 Ⅱ

680. 驗證回文字符串 Ⅱ 給定一個非空字符串 s&#xff0c;最多刪除一個字符。判斷是否能成為回文字符串。 示例 1: 輸入: s “aba” 輸出: true 示例 2: 輸入: s “abca” 輸出: true 解釋: 你可以刪除c字符。 示例 3: 輸入: s “abc” 輸出: false 解題思路 使用…

Android--RxJava2更新體驗

截止日前最新版2017-3-15: RxJava compile ‘io.reactivex:rxjava:1.2.7’ compile ‘io.reactivex:rxandroid:1.2.1’ RxJava2 compile “io.reactivex.rxjava2:rxjava:2.0.7” compile “io.reactivex.rxjava2:rxandroid:2.0.1” 1:create操作改變 Rxjava CompositeSubscri…

kotlin和java語言_Kotlin VS Java – 2020年您應該學習哪種編程語言?

kotlin和java語言It has been several years since Kotlin came out, and it has been doing well. Since it was created specifically to replace Java, Kotlin has naturally been compared with Java in many respects.自Kotlin問世以來已經有好幾年了&#xff0c;而且一切…

oracle部署--安裝oracle軟件與部署單實例數據庫

一、安裝oracle數據庫軟件 1.創建相應的用戶組及用戶 groupadd oinstall groupadd oper groupadd dba useradd -g oinstall -G oper,dba oracle 2.創建oracle software安裝路徑 mkdir -p /u01/app/oracle/product/11.2.0/db_1 3.修改安裝路徑權限 chown -R oracle:oinstall …

web前端【第十一篇】jQuery屬性相關操作

知識點總結 1、屬性 屬性&#xff08;如果你的選擇器選出了多個對象&#xff0c;那么默認只會返回出第一個屬性&#xff09;、 attr(屬性名|屬性值) - 一個參數是獲取屬性的值&#xff0c;兩個參數是設置屬性值 - 點擊加載圖片示例 re…

528. 按權重隨機選擇

528. 按權重隨機選擇 給定一個正整數數組 w &#xff0c;其中 w[i] 代表下標 i 的權重&#xff08;下標從 0 開始&#xff09;&#xff0c;請寫一個函數 pickIndex &#xff0c;它可以隨機地獲取下標 i&#xff0c;選取下標 i 的概率與 w[i] 成正比。 例如&#xff0c;對于 w…

sql語句語法多表關聯_SQL創建表語句-帶有示例語法

sql語句語法多表關聯SQL is one of the most reliable and straightforward querying languages around. It provides clear cut syntax that reads easily without abstracting away too much of the functionalitys meaning.SQL是最可靠&#xff0c;最直接的查詢語言之一。 它…