【leetcode】Tree——Binary Tree Level Order Traversal(102)
来源:互联网 发布:广告图形设计软件 编辑:程序博客网 时间:2024/06/05 16:30
题目:
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,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
思路1:BFS
针对每一层就行操作的话。注意,不能直接在for里面写for(int i=0;i<queue.size();i++),因为在for内部,会向queue offer元素,导致长度改变,for循环会出问题。
while(!queue.isEmpty()){
int size = queue.size();
for(int i=0;i<size;i++){
*****
queue.offer(element);
*****
}
}
代码1:
public List<List<Integer>> levelOrder_BFS(TreeNode root) {List<List<Integer>> results = new ArrayList<List<Integer>>();if(root==null){return results;}Queue<TreeNode> q = new LinkedList<TreeNode>();q.offer(root);while(!q.isEmpty()){List<Integer> list = new ArrayList<Integer>();int size = q.size();for(int i=0;i<size;i++){TreeNode curNode = q.poll();list.add(curNode.val);if(curNode.left!=null)q.offer(curNode.left);if(curNode.right!=null)q.offer(curNode.right);}results.add(list);} return results;}
思路2:DFS
DFS得记录当前的层数,然后在results对于层的list里面添加元素
代码2:
public List<List<Integer>> levelOrder_DFS(TreeNode root) {List<List<Integer>> results = new ArrayList<List<Integer>>();if(root==null){return results;}level(root,results,1); return results;}private void level(TreeNode root, List<List<Integer>> results,int level){if(results.size()<level){results.add(new ArrayList<Integer>());}results.get(level-1).add(root.val);if(root.left!=null)level(root.left,results,level+1);if(root.right!=null)level(root.right,results,level+1);}
0 0
- leetcode 102 —— Binary Tree Level Order Traversal
- 【leetcode】Tree——Binary Tree Level Order Traversal(102)
- Leetcode 102 Binary Tree Level Order Traversal
- LeetCode(102)Binary Tree Level Order Traversal
- LeetCode 102 Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal [102]
- [leetcode 102]Binary Tree Level Order Traversal
- [LeetCode 102]Binary Tree Level Order Traversal
- leetCode #102 Binary Tree Level Order Traversal
- leetcode-102 Binary Tree Level Order Traversal
- leetcode || 102、Binary Tree Level Order Traversal
- leetcode #102Binary Tree Level Order Traversal
- Leetcode[102]-Binary Tree Level Order Traversal
- LeetCode 102 Binary Tree Level Order Traversal
- LeetCode---(102)Binary Tree Level Order Traversal
- leetcode 102 Binary Tree Level Order Traversal
- leetcode[102]:Binary Tree Level Order Traversal
- Leetcode # 102 Binary Tree Level Order Traversal
- OpenLayer3读取Geoserver切割的离线瓦片
- 转换操作符重载
- java容器类小结
- 关于最近刷leetcode总结
- RandomAccessFile发生java.io.FileNotFoundException
- 【leetcode】Tree——Binary Tree Level Order Traversal(102)
- BeanFectory与AppliCationContext 的
- 文章标题
- gentoo 安装笔记
- 最大子列和问题
- 前后端分离那些事
- 解决ThinkServer TS250中网卡在centos6.5中没有安装驱动
- 机器学习总结1
- Gradle基本知识点与常用配置