lettcode-102:Binary Tree Level Order Traversal (Java)
Binary Tree Level Order Traversal
二叉树的层序遍历
两种方式:
1、用两个queue交替表示每一层的节点
2、用两个node,一个表示当前层的最后一个节点,一个表示下一层的最后一个节点
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.Queue;
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> list = new ArrayList<List<Integer>>();
if(root == null)
return list;
Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
Queue<TreeNode> queue2 = new ArrayDeque<TreeNode>();
queue.offer(root); List<Integer> listLevel = new ArrayList<Integer>(); TreeNode curNode = null;
while( !queue.isEmpty() || (!queue2.isEmpty())) {
while(!queue.isEmpty()){
curNode = queue.poll();
listLevel.add(curNode.val);
if(curNode.left != null) queue2.offer(curNode.left);
if(curNode.right != null) queue2.offer(curNode.right); if(queue.isEmpty()){
list.add(listLevel);
listLevel = new ArrayList<Integer>();
}
} while(!queue2.isEmpty()){
curNode = queue2.poll();
listLevel.add(curNode.val);
if(curNode.left != null) queue.offer(curNode.left);
if(curNode.right != null) queue.offer(curNode.right); if(queue2.isEmpty()){
list.add(listLevel);
listLevel = new ArrayList<Integer>();
}
} } /** 两个node,
* lastNode: 当前层的最后一个节点
* lastInqueue:表示某层最后进入队列的节点
TreeNode curNode = root;
TreeNode lastNode = root;
TreeNode lastInQueue = root;
while(!queue.isEmpty()){
curNode = queue.poll();
listLevel.add(curNode.val); if(curNode.left != null){
queue.offer(curNode.left);
lastInQueue = curNode.left;
}
if(curNode.right != null){
queue.offer(curNode.right);
lastInQueue = curNode.right; } if(curNode == lastNode){
list.add(listLevel);
// get last node
lastNode = lastInQueue;
listLevel = new ArrayList<Integer>(); }
}
*/ return list;
}
}
lettcode-102:Binary Tree Level Order Traversal (Java)的更多相关文章
- leetcode 102 Binary Tree Level Order Traversal ----- java
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 二叉树层序遍历
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- 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 (2 solutions)
Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes ...
- [刷题] 102 Binary Tree Level Order Traversal
要求 对二叉树进行层序遍历 实现 返回结果为双重向量,对应树的每层元素 队列的每个元素是一个pair对,存树节点和其所在的层信息 1 Definition for a binary tree node ...
- Java for 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, ...
- Java [Leetcode 102]Binary Tree Level Order Traversal
题目描述: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ...
- 102. Binary Tree Level Order Traversal
题目: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ri ...
- 【leetcode刷题笔记】Binary Tree Level Order Traversal(JAVA)
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
随机推荐
- AbStract 和Interface 方法是否能用Static修饰,为什么?
Abstract 和Interface 方法是否能用Static修饰,为什么? interface中不能含有Static方法,属性,成员变量. Abstract中可以有Static方法,属性,成员变量 ...
- UVA 11021 - Tribles(概率)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=481&page=s ...
- Android开发了解——ODEX
ODEX是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个·dex文件单独存放,原APK中的classes.dex文件会保留.这 ...
- Centos 6.5 安装 chrome , mplayer , alarm , clock
http://my.oschina.net/jianweizhang/blog/306946 Chrome wget http://chrome.richardlloyd.org.uk/install ...
- Ubuntu lnmp安装记录
参考了: Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL 在访问 info.php的时候,我显示的是502错误.后面我参考了: Ubuntu15 ...
- 【转】monkeyrunner学习总结二:连接、安装、启动
一.获取packageName与startActivity 前置条件:已成功安装配置SL4A并连接PC调试(参见:monkeyrunner学习总结一:环境搭建:http://www.amsoft.cn ...
- c# json转Dictionary字典
JavaScriptSerializer s = new JavaScriptSerializer(); string jsonTexts = "{\"count\" ...
- ASP伪静态页面(不需要通过iis+ISAPI_Rewrite)
很简单的教程,献给喜欢SEO的朋友们. 不需要通过iis+ISAPI_Rewrite做基于IIS的url rewrite 一.数据库很简单使用ACCESS,Data.mdb建立一个表Article,三 ...
- 怎么在ubuntu上使用pidgin登陆QQ
1.Ubuntu pidgin安装webqq 首先安装webqq的通讯协议: sudo add-apt-repository ppa:lainme/pidgin-lwqq sudo apt-get u ...
- Strut2文件下载
Struts2控制文件下载,可以在文件下载之前做一些操作.这里就以权限控制为例,简单实现一下Struts2的文件下载. 一.Struts2文件下载的Action配置,是提供了一个能返回InputStr ...