*LeetCode-Binary Tree Level Order Traversal
来源:互联网 发布:手机光绘软件 编辑:程序博客网 时间:2024/06/06 00:21
首先不知道java中bfs用什么数据结构,知道用queue之后,不知道queue怎么实现。
java中一般使用
Queue queueA = new LinkedList();Queue queueB = new PriorityQueue();
来实现queue,常用linkedlist来实现没有优先级的,即单纯的fifo.
记得看queue的讲解,里面有两套function,分别对应
offer peek poll都是带返回值的。
其次要注意while里面控制每层node个数的,就是queue中现在有几个node,记得要先获取num
public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { Queue <TreeNode> que = new LinkedList<TreeNode>(); List<List<Integer>> ans = new ArrayList<List<Integer>>(); if ( root == null) return ans; que.offer(root); while (!que.isEmpty()){ int num = que.size(); List <Integer> list = new ArrayList<Integer>(); for ( int i = 0; i < num; i ++ ){ if ( que.peek().left != null ) que.offer(que.peek().left); if ( que.peek().right != null ) que.offer(que.peek().right); list.add( que.poll().val); } ans.add(list); } return ans; }}
递归的方法:
public List<List<Integer>> levelOrderBottom(TreeNode root) { LinkedList<List<Integer>> list = new LinkedList<List<Integer>>(); addLevel(list, 0, root); return list;}private void addLevel(LinkedList<List<Integer>> list, int level, TreeNode node) { if (node == null) return; if (list.size()-1 < level) list.addFirst(new LinkedList<Integer>()); list.get(list.size()-1-level).add(node.val); addLevel(list, level+1, node.left); addLevel(list, level+1, node.right);}
0 0
- LeetCode[Tree]: Binary Tree Level Order Traversal
- *(leetcode) Binary Tree Level Order Traversal (tree)
- [leetcode][tree] Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal
- [LeetCode]Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- C零散_摘自C程序设计_结构体中.和->区别
- 1.Two Sum
- STL transform() demo
- HDU 2095--Find your present (2) 【set】
- ps for mac 破解版安装
- *LeetCode-Binary Tree Level Order Traversal
- DB_BLOCK_CHECKSUM&&DB_BLOCK_CHECKING
- 【转】#、##、#@在#define中的用法
- 商品销售系统
- 利用opencv的hog+svm实现细胞识别分类器
- Zookeeper:服务器和会话
- 2.Add Two Numbers
- java 解惑3 string 字符串
- java读取配置文件