LeetCode(32)-Binary Tree Level Order Traversal
2016-04-07 19:51
357 查看
题目:
LeetCode Premium Subscription Problems Pick One Mock Articles Discuss Book fengsehng 102. Binary Tree Level Order Traversal My Submissions QuestionEditorial Solution Total Accepted: 98313 Total Submissions: 302608 Difficulty: Easy 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] ]
题意:
题意是把一颗二叉树,按照从上到下,,把每一排节点从左到右存进list,最后把所有list存进一个list考虑用递归,设置两个Queue,first和second来存放TreeNode。first来存放当前最下层的一行,second用来存放下一行,first的元素的左右节点赋值给second,把second的元素给first,往下移动
考虑first是空的时候,停止,注意判断临时数组tmp是否为空,非空才能存进
-
代码:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> all = new ArrayList<List<Integer>>(); Queue<TreeNode> first = new LinkedList<TreeNode>(); Queue<TreeNode> second = new LinkedList<TreeNode>(); if(root == null){ return all; } List<Integer> tmp = new ArrayList<Integer>(); tmp.add(root.val); all.add(tmp); first.add(root); while(!first.isEmpty()){ TreeNode node = first.poll(); if(node.left != null){ second.add(node.left); } if(node.right != null){ second.add(node.right); } if(first.isEmpty()){ List<Integer> tmp1 = new ArrayList<Integer>(); while(!second.isEmpty()){ TreeNode n = second.poll(); first.add(n); tmp1.add(n.val); } if(tmp1.size() != 0){ all.add(tmp1); } second.clear(); } } return all; } }
相关文章推荐
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总