429. N叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

例如,给定一个 3叉树 :

返回其层序遍历:

[
[1],
[3,2,4],
[5,6]
]

说明:

树的深度不会超过 1000。
树的节点总数不会超过 5000。

solution:

 1 /*
 2 // Definition for a Node.
 3 class Node {
 4 public:
 5     int val;
 6     vector<Node*> children;
 7
 8     Node() {}
 9
10     Node(int _val, vector<Node*> _children) {
11         val = _val;
12         children = _children;
13     }
14 };
15 */
16 class Solution {
17 public:
18     vector<vector<int>> levelOrder(Node* root) {
19         vector<vector<int> >vec;
20         if(root)
21         {
22           queue<Node*>q;
23           q.push(root);
24           while(!q.empty())
25           {
26             int size = q.size();
27             vector<int> vecChild;
28             while(size--)
29             {
30               Node* node = q.front();
31               q.pop();
32               vecChild.push_back(node->val);
33               for(auto child : node->children)
34                 q.push(child);
35             }
36             vec.push_back(vecChild);
37           }
38         }
39       return vec;
40     }
41 };

原文地址:https://www.cnblogs.com/Swetchine/p/11307374.html

时间: 2024-07-31 19:54:50

429. N叉树的层序遍历的相关文章

LeetCode 429. N叉树的层序遍历(N-ary Tree Level Order Traversal)

429. N叉树的层序遍历 429. N-ary Tree Level Order Traversal LeetCode429. N-ary Tree Level Order Traversal 题目描述 给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3 叉树: 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 1000. 树的节点总数不会超过 5000. Java 实现 import java.util.Li

力扣——N叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 1000. 树的节点总数不会超过 5000. /* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val,List&

c++智能指针和二叉树(1): 图解层序遍历和逐层打印二叉树

二叉树是极为常见的数据结构,关于如何遍历其中元素的文章更是数不胜数. 然而大多数文章都是讲解的前序/中序/后序遍历,有关逐层打印元素的文章并不多,已有文章的讲解也较为晦涩读起来不得要领.本文将用形象的图片加上清晰的代码帮助你理解层序遍历的实现,同时我们使用现代c++提供的智能指针来简化树形数据结构的资源管理. 那么现在让我们进入正题. 使用智能指针构建二叉树 我们这里所要实现的是一个简单地模拟了二叉搜索树的二叉树,提供符合二叉搜索树的要求的插入功能个中序遍历.同时我们使用shared_ptr来管

【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】

[107-Binary Tree Level Order Traversal II(二叉树层序遍历II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example

二叉树的层序遍历

二叉树层序遍历即从上往下.自左而右地访问每个节点,但按这样的顺序的话,相邻访问的两个节点间大多没有直接联系,不易访问,所以会显得比较麻烦,不过我们有队列这个好东西,建一个顺序表队列,里面按顺序存入每个节点的地址,之后在队列中按顺序访问就行了.关键是用队列到底能不能恰好地把每一个节点按从上往下.自左而右的顺序存储起来呢?请看如下分析. local表示当前访问的节点在队列中的位置,length表示队列的长度.local=0时在访问A,此时可把B.C加入队列,length=3:当local=1访问B时

LeetCode OJ:Binary Tree Level Order Traversal(二叉树的层序遍历)

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example:Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its level order traversal as: [ [3], [9,20], [15,7] ] 层序遍历,既

二叉树层序遍历的实现

我们可以很容易的使用队列来实现二叉树的层序遍历,代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAX 10 4 5 6 //二叉树存储结构定义 7 typedef char Item; 8 typedef struct node *link; 9 struct node {Item item; link l, r;}; 10 11 int Create(link *tp); 12 void show(link

编程之美问题之二叉树层序遍历多种解法

二叉树的层序遍历(要求区分层,例如每层遍历完输出换行) 单单层序遍历非常简单,一个队列就搞定了,但是区分层则要麻烦些.总的思路无非就是在每次print的时候,要能通过某个东西 区分出当前节点是否是一层最后一个节点,或者下一层的最后一个节点,感觉有点类似于机器学习中找个区分度明显的特征: 1.自己的解法,在单队列基础上,输入队列的数据添加一个标志 ,LevelHeaded,同时,在后面插入两个孩子的时候,判断是否这次输出的是队头,如果是的话,先插 个队头标志,再插入孩子,而且插入一次之后,后面不能

层序遍历及其进阶版

输入为:abd##eh###cfi##j##g## 1.普通层序遍历:输出为一行 2.进阶版1:输出每一层,从左向右依次输出 3.进阶版2:S型输出每一层,即从右向左和从左向右交替输出 #include<iostream> #include<vector> using namespace std; template<class T> struct BiNode { T data; BiNode<T>* leftchild,*rightchild; }; te