LeetCode102 Binary Tree Level Order Traversal Java题解
2015-07-06 21:13
316 查看
题解:
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
return its level order traversal as:
解答:
层序遍历,把一层的节点存在一个队列中,然后依次遍历队列的每一个节点,如果它的子节点不为空继续加入队列中 当队列为空时遍历结束
代码:
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] ]
解答:
层序遍历,把一层的节点存在一个队列中,然后依次遍历队列的每一个节点,如果它的子节点不为空继续加入队列中 当队列为空时遍历结束
代码:
public static List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result=new ArrayList<List<Integer>>();//返回的最终结果 Queue<TreeNode> treeNodes2=new LinkedList<>();//用来存放每一层的节点 //处理第一个节点(root) if(root==null) return result; else { List<Integer> temp=new ArrayList<>();//存放暂时的结果 temp.add(root.val); treeNodes2.offer(root); result.add(temp); } while(!treeNodes2.isEmpty()) { int i=treeNodes2.size(); List<Integer> tempReslut=new ArrayList<>();//存放暂时的结果 while(i>0)//遍历这一层的所有节点 { TreeNode tNode=treeNodes2.poll(); if(tNode.left!=null) { tempReslut.add(tNode.left.val); treeNodes2.offer(tNode.left); } if(tNode.right!=null) { tempReslut.add(tNode.right.val); treeNodes2.offer(tNode.right); } i--; } if(!tempReslut.isEmpty()) result.add(tempReslut); } return result; }
相关文章推荐
- Java集合系列之ArrayList源码分析
- JAVA集合类
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- JavaBean 用反射自己实现简单内省操作 基础
- Spring揭秘:第七章-第十二章Spring AOP框架
- Java实现链式存储的二叉查找树(递归方法)
- Java中的System.in,System.out,System.err
- Summary Ranges
- JAVA中最常用的十个快捷键
- Spring技术内幕:Spring AOP的实现原理(五)
- Java集合之ArrayList源码分析
- java基础知识--对super()的理解
- Java遍历列出某一目录下的文件及文件夹,寻找某一指定文件
- Java基础---集合Collection
- 『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)
- java SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- Java RMI例子
- javaSE学习笔记之集合
- 详解Spring MVC 4常用的那些注解
- 第0周-JAVA云课堂学习日志