(二叉树的层次遍历)LeetCode#102. Binary Tree Level Order Traversal
来源:互联网 发布:国内熟女网络视频 编辑:程序博客网 时间:2024/06/05 17:25
- 题目:二叉树的层次遍历,每一层遍历的结果存为一个list,最终返回结果形式为[[],[],[]]
- 难度:Medium
- 思路:层次遍历的节点访问顺序是:根节点,再依照先左结点后右节点,将节点按照顺序存入队列,然后访问队列的结点
- 代码:
队列实现
public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if(root == null){ return result; } LinkedList<TreeNode> queue = new LinkedList<>(); queue.offer(root); while(!queue.isEmpty()){ int size = queue.size(); List<Integer> tmp = new ArrayList<>(); for(int i = 0; i < size; i++){ TreeNode node = queue.poll(); tmp.add(node.val); if(node.left != null){ queue.offer(node.left); } if(node.right != null){ queue.offer(node.right); } } result.add(tmp); } return result; }}
层次遍历的递归实现,一开始我用一个ArrayList来存待访问的节点,我的代码报 stackOverFlowError;后来看了Discuss里的C++递归实现,发现可以通过传入一个当前访问的是第几层dep来避免使用很多空间
public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if(root == null){ return result; } recursion(root, result, 0); return result; } public void recursion(TreeNode node, List<List<Integer>> list, int dep){ if(node == null){ return; } if(dep == list.size()){ list.add(new ArrayList<>()); } list.get(dep).add(node.val); recursion(node.left, list, dep+1); recursion(node.right, list, dep+1); }}
阅读全文
0 0
- (二叉树的层次遍历)LeetCode#102. Binary Tree Level Order Traversal
- LeetCode(Binary Tree Level Order Traversal, 2,Zigzag)二叉树的层次遍历
- LeetCode OJ 之 Binary Tree Level Order Traversal (二叉树的层次遍历)
- LeetCode OJ 之 Binary Tree Level Order Traversal II (二叉树的层次遍历-二)
- LeetCode OJ 之 Binary Tree Zigzag Level Order Traversal (二叉树的曲线层次遍历)
- LeetCode 102 Binary Tree Level Order Traversal(二叉树的层次遍历)
- 【LeetCode】Binary Tree Zigzag Level Order Traversal 二叉树的锯齿形层次遍历
- 102.LeetCode Binary Tree Level Order Traversal(easy)[二叉树层次遍历 广度搜索 队列]
- 【二叉树层次遍历】Binary Tree Level Order Traversal
- leetcode---binary-tree-level-order-traversal-ii---树层次遍历
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- leetcode 二叉树层次遍历输出Binary Tree Level Order Traversal
- [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)
- 107.LeetCode Binary Tree Level Order Traversal II(easy)[二叉树层次遍历 广度搜索 队列]
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- Leetcode 107. Binary Tree Level Order Traversal II 二叉树层次遍历2 解题报告
- (二叉树z字形层次遍历)LeetCode#103. Binary Tree Zigzag Level Order Traversal
- Leetcode#107. Binary Tree Level Order Traversal II (queue二叉树层次遍历)
- bzoj1727 [Usaco2006 Open]The Milk Queue 挤奶队列 贪心
- POJ 1731 Orders 笔记
- hibernate5的初体验
- 分水岭算法的概念及原理
- 【6.9】c++ primer plus 课后编程答案
- (二叉树的层次遍历)LeetCode#102. Binary Tree Level Order Traversal
- 文档收藏夹
- keras可视化遇到pydot&graphviz无法导入问题
- 倒水
- 【Tensorflow】报错:FailedPreconditionError: Attempting to use uninitialized value keep_prob_7
- Python 中文编码问题
- VC维的来龙去脉
- 并发世界的2个重要定律Amdahl、Gustafson定律
- struts2--实现Excel上传并解析