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, ...
随机推荐
- (转)CentOS 6.5下Redis安装详细步骤
Redis简介:Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作 ...
- Spring Boot 获取ApplicationContext
package com.demo; import org.springframework.beans.BeansException; import org.springframework.contex ...
- javascript优化工具 Doloto
Doloto是“Download Time Optimizer”的简写.官方页面上说它对于大型复杂的AJAX应用尤其的有用,因为这些应用包含了大量的 JavaScript 代码.简单的说,它的工作原理 ...
- systemverilog interface
普通的模块使用法:注意我们这里只实现了部分功能....不是完全的读写模块.... module mem_core( input logic wen, input logic ren, ...
- createjs 使用记录
createjs由几个库组成: l,easeljs,这个是核心,包括了显示列表.事件机制: 2,preloadjs,用于预加载图片等: 3,tweenjs,用于控制元件的缓动: 4,soundjs,用 ...
- 关于c#生成word。
需求:需要把数据做成这样的效果.一个页面展示一个r单子数据. object filename = ""; Object Nothing = System.Reflection.Mi ...
- Appium 提高脚本复用、可配置性
- Java JDK1.5、1.6、1.7新特性整理(转)
原文链接:http://www.cnblogs.com/tony-yang-flutter/p/3503935.html 一.Java JDK1.5的新特性 1.泛型: List<String& ...
- css 控制滚动样式
::-webkit-scrollbar{width: 8px; height: 8px;}::-webkit-scrollbar-button:vertical{display:none;}::-we ...
- 最短路 dijkstra and floyd
二:最短路算法分析报告 背景 最短路问题(short-path problem):若网络中的每条边都有一个数值(长度.成本.时间等),则找出两节点(通常是源节点和阱节点)之间总权和最小的路径就是最短路 ...