[LeetCode]102. Binary Tree Level Order Traversal
来源:互联网 发布:js 给input value赋值 编辑:程序博客网 时间:2024/06/07 13:17
https://leetcode.com/problems/binary-tree-level-order-traversal/
层序遍历二叉树
二叉树问题,很多递归调用时要传入当前位置的深度depth!!!!
解法一:
非递归,注意:1、queue的API;2、只用一个queue就可以完成
public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new LinkedList(); if (root == null) { return res; } Queue<TreeNode> queue = new LinkedList(); queue.offer(root); while (!queue.isEmpty()) { List<Integer> intList = new LinkedList(); int size = queue.size(); for (int i = 0; i < size; i++) { if (queue.peek().left != null) { queue.add(queue.peek().left); } if (queue.peek().right != null) { queue.add(queue.peek().right); } intList.add(queue.poll().val); } res.add(intList); } return res; }}
解法二:
递归,把当前遍历到的加入到当前的深度所代表的index的list中
public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new LinkedList(); if (root == null) { return res; } dfs(root, res, 0); return res; } private void dfs(TreeNode root, List<List<Integer>> res, int depth) { if (root == null) { return; } if (depth >= res.size()) { res.add(new LinkedList()); } res.get(depth).add(root.val); dfs(root.left, res, depth + 1); dfs(root.right, res, depth + 1); }}
倒序层序遍历二叉树只要把intList插入到res的第一个位置即可
https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> res = new LinkedList(); if (root == null) { return res; } Queue<TreeNode> queue = new LinkedList(); queue.offer(root); while (!queue.isEmpty()) { List<Integer> intList = new LinkedList(); int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode node = queue.peek(); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } intList.add(queue.poll().val); } res.add(0, intList); } return res; }}
0 0
- 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
- Leetcode 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal LeetCode
- [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
- 【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
- 《Linux启动过程分析》内核挂载根文件系统
- 面向切面的Spring<一>
- Swift3.0-视图控制器的生命周期
- dom4j解析
- python socket编程介绍
- [LeetCode]102. Binary Tree Level Order Traversal
- c++遍历搜索文件和文件夹
- 蓝桥杯 十字图打印
- 源码推荐:iOS开发商品展示的不同样式Demo和微信小程序开源项目库汇总
- 17年第一篇_SQL SHOW
- Angular 1.6提示$http.get(...).success is not a function
- AR 增强现实 开发入门详解 android studio Vuforia(二)更换背景目标图片
- tq210-kernel 3.0.8 SD卡作为文件系统
- Openwrt ubus机制的探究