【LeetCode】102. Binary Tree Level Order Traversal (2 solutions)
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]
]
解法一:递归
参考了Discussion中stellari的做法,递归进行层次遍历,并将每个level对应于相应的vector。
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution
{
public:
vector<vector<int> > result; void levelTra(TreeNode *root, int level)
{
if(root == NULL)
return;
if(level == result.size())
{
vector<int> v;
result.push_back(v);
}
result[level].push_back(root->val);
levelTra(root->left, level+);
levelTra(root->right, level+);
} vector<vector<int> > levelOrder(TreeNode *root)
{
levelTra(root, );
return result;
}
};

解法二:
层次遍历,层数使用level来记录。同层装入同一个vector。
当进入新的一层时,将上层的vector保存,并清空。
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/ struct Node
{
TreeNode* tNode;
int level;
Node(TreeNode* newtNode, int newlevel): tNode(newtNode), level(newlevel) {}
}; class Solution {
public:
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int> > ret;
if(!root)
return ret;
// push root
Node* rootNode = new Node(root, );
queue<Node*> Nqueue;
Nqueue.push(rootNode); vector<int> cur;
int curlevel = ;
while(!Nqueue.empty())
{
Node* frontNode = Nqueue.front();
Nqueue.pop(); if(frontNode->level > curlevel)
{
ret.push_back(cur);
cur.clear();
curlevel = frontNode->level;
} cur.push_back(frontNode->tNode->val); if(frontNode->tNode->left)
{
Node* leftNode = new Node(frontNode->tNode->left, frontNode->level+);
Nqueue.push(leftNode);
}
if(frontNode->tNode->right)
{
Node* rightNode = new Node(frontNode->tNode->right, frontNode->level+);
Nqueue.push(rightNode);
}
}
ret.push_back(cur);
return ret;
}
};

【LeetCode】102. Binary Tree Level Order Traversal (2 solutions)的更多相关文章
- 【LeetCode】102. Binary Tree Level Order Traversal 二叉树的层序遍历 (Python&C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS DFS 日期 题目地址:https://lee ...
- 【LeetCode】102 - Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- 【LeetCode】102. Binary Tree Level Order Traversal 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目描述 Given a bi ...
- 【LeetCode】107. Binary Tree Level Order Traversal II (2 solutions)
Binary Tree Level Order Traversal II Given a binary tree, return the bottom-up level order traversal ...
- 【一天一道LeetCode】#102. Binary Tree Level Order Traversal
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...
- 【LeetCode】107. Binary Tree Level Order Traversal II 解题报告 (Python&C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:DFS 方法二:迭代 日期 [LeetCode ...
- 【LeetCode】107 - Binary Tree Level Order Traversal II
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- 【一天一道LeetCode】#107. Binary Tree Level Order Traversal II
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...
- 【leetcode】429. N-ary Tree Level Order Traversal
problem 429. N-ary Tree Level Order Traversal solution1:Iteration /* // Definition for a Node. class ...
随机推荐
- OpenVPN配置网桥模式的一些理解
说明: 1.网桥的作用是将所有的网卡都能直连主机所在的路由器,可以把它当做一个独立的PC. 2.OpenVPN设置成网桥之后,IP设置成主机所在的IP网段,这样客户端连接进来之后就是所在主机所在的网络 ...
- Circuit provides reference for multiple ADCs
The achievable accuracy for systems with multiple ADCs depends directly on the reference voltages ap ...
- Ubuntu OS应用Runtime Enviroment
在这篇文章中.我们将介绍Ubuntu OS的Runtime Environment.在文章"App confinement: Security policy for click packag ...
- Js组件layer的使用
作为独立组件使用 layer 引入好layer.js后,直接用即可 <script src="layer.js"></script> <script& ...
- HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
IIS的根节点->右侧"ISAPI和CGI限制"->把禁止的DotNet版本项设置为允许,即可.
- 操作系统概念学习笔记三 cpu调度算法
一 基本概念 1 队列中的记录通常是进程的进程控制块. 2 CPU调度决策可在如下四种环境下发生 a 当一个进程从运行状态切换到等待状态 例如,I/O请求或调用wait以等待一个子进程的终止 b 党一 ...
- 2014Esri全球用户大会——亮点系列之产品技术
2014年Esri全球用户大会已于7月14日~18日隆重召开,让我们一起来回味下面精彩内容: 序:大会主题"Creating Our Future" [解读]: 传达两个核 ...
- Linux下性能监控的三把军刀
Linux主机怎么管,十八般兵器件件都可以算得上是瑞士军刀,称手的兵器一两件即可,最常用的,莫过于stat家族三兄弟吧. 计算机主要资源是什么?CPU.内存和磁盘?尽管现在云计算技术有多普及,查看一个 ...
- beyond compare 比较Xls文件时只显示有差异的列
beyond compare是专业级的文件比较工具,可以比较所有的文件格式,已经成为我工作中的必备软件 在某一个工作项目中需要比较两个Xls文件,两个文件列是相同的,主要是看两个文件的列内容有什么变化 ...
- easyui window refresh 刷新两次解决办法
这样写刷新两次 $("#windowid").window('refresh','url01.php'); $("#windowid").window('ope ...