102 Binary Tree Level Order Traversal
2016-06-09 22:09
232 查看
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:
BFS模板题。
粗暴了,直接两个队列,一个记录node,一个记录深度
update 2016.7.20
深度不用额外使用队列来记录,设置计数值,每次出队就减少计数值,每当减到0表明本层已经遍历完毕,下一层的元素数目就是当前队列的size,把计数值重置为当前队列size即可
For example:
Given binary tree
[3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
BFS模板题。
粗暴了,直接两个队列,一个记录node,一个记录深度
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> retlist=new ArrayList<>(); if(root==null) return retlist; ArrayDeque<TreeNode> deque=new ArrayDeque<>(); ArrayDeque<Integer> leveldeq=new ArrayDeque<>(); deque.add(root); leveldeq.add(1); int prelevel=1; ArrayList<Integer> arraylist=new ArrayList<>(); while(!deque.isEmpty()) { TreeNode t=deque.poll(); int level=leveldeq.poll(); if(level>prelevel) { retlist.add(new ArrayList<>(arraylist)); arraylist.clear(); } arraylist.add(t.val); if(t.left!=null) { deque.add(t.left); leveldeq.add(level+1); } if(t.right!=null) { deque.add(t.right); leveldeq.add(level+1); } prelevel=level; } retlist.add(arraylist); return retlist; }
update 2016.7.20
深度不用额外使用队列来记录,设置计数值,每次出队就减少计数值,每当减到0表明本层已经遍历完毕,下一层的元素数目就是当前队列的size,把计数值重置为当前队列size即可
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> retlist=new ArrayList<>(); if(root==null) return retlist; ArrayDeque<TreeNode> deque=new ArrayDeque<>(); deque.add(root); int level=1; ArrayList<Integer> arraylist=new ArrayList<>(); while(!deque.isEmpty()) { TreeNode t=deque.poll(); if(t.left!=null) deque.add(t.left); if(t.right!=null) deque.add(t.right); level--; arraylist.add(t.val); if(level==0) { retlist.add(new ArrayList<>(arraylist)); arraylist.clear(); level=deque.size(); } } return retlist; }
相关文章推荐
- jQuery选择器-子元素选择器示例
- 第七届ACM山东省赛-C Proxy
- 【bzoj1146】【CTSC2008】【网络管理】【树链剖分+线段树套平衡树】
- 判断一棵树是不是另外一棵树的子树
- cef webui 足迹
- Java for Web学习笔记(二十):Session(4)在集群中使用Session
- 101. Symmetric Tree
- POJ1141 Brackets Sequence
- CSS---h3标题、横线、和圆形按纽共处一行
- python的range()函数用法
- 【bzoj1601】【uscao2008 oct】【灌水】【最小生成树】
- 100. Same Tree
- 新工作、生活与态度
- 有个想法,希望有厂家能实现
- c++:复数相加
- Linux中的ctags和Makefile使用
- Centos中vim的配置
- 微信企业号开发启示的一些东西
- 回顾一些小函数
- Linux----find命令