Binary Tree Level Order Traversal - leetcode - java
2015-12-18 10:06
639 查看
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]
]
DFS实现:
BFS实现:
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]
]
DFS实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { // DFS 遍历 public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); traverse(res, root, 0); return res; } public void traverse(List<List<Integer>> res, TreeNode root, int level) { if (root == null) { return; } if (res.size() > level) { res.get(level).add(root.val); } else { ArrayList list = new ArrayList<Integer>(); list.add(root.val); res.add(list); } traverse(res, root.left, level + 1); traverse(res, root.right, level + 1); } }
BFS实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { // BFS遍历打印 public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new LinkedList<List<Integer>>(); if (root == null) return res; LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); ArrayList<Integer> list = new ArrayList<Integer>(); int cur = 1; int nextLevel = 0; while (!queue.isEmpty()) { TreeNode tmp = queue.poll(); cur--; if (tmp.left != null) { queue.add(tmp.left); nextLevel++; } if (tmp.right != null) { queue.add(tmp.right); nextLevel++; } list.add(tmp.val); if (cur == 0) { res.add(list); list = new ArrayList<Integer>(); cur = nextLevel; nextLevel = 0; } } return res; } }
相关文章推荐
- Top 16 Java 应用类 - 这些功能再也不用自己写了
- 通过 EWS JAVA API读取exchange邮件
- Eclipse 安装 Valgrind 插件(解决安装完找不到的问题)
- java——Arrays.asList()方法
- Arrays.asList java.lang.UnsupportedOperationException 异常
- Symmetric Tree leetcode java
- Java之—— SSH整合常见错误
- 实习过程学习(4):java跨项目访问
- spring aop 错误解决无法查询到internalAutoProxyCreator
- java-System.getEnv()与System.getProperties()
- 基本排序_选择排序_Java实现
- Java基础--面向对象(内部类、异常)
- 使用eclipse创建java程序可执行jar包
- 使用eclipse创建java程序可执行jar包
- java实现ip地址与十进制数相互转换
- 小码蚁java学习日记——起航篇
- java Collection
- 如何禁用Eclipse的Validating
- java、javac -version不一致(java编译及运行环境不一致)的环境变量设置问题解决
- Java 工程师成神之路