LeetCode 102. Binary Tree Level Order Traversal--递归,迭代-Python,Java解法
题目地址:
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]
]
这道题可以用迭代做,也可以用递归做。
Python递归解法(比较简单):
class Solution:def levelOrder(self, root):""":type root: TreeNode:rtype: List[List[int]]"""levels = []if not root:return levelsdef helper(node, level):# start the current levelif len(levels) == level:levels.append([])# append the current node valuelevels[level].append(node.val)# process child nodes for the next levelif node.left:helper(node.left, level + 1)if node.right:helper(node.right, level + 1)helper(root, 0)return levels
Python迭代解法,使用队列
from collections import deque
class Solution:def levelOrder(self, root):""":type root: TreeNode:rtype: List[List[int]]"""levels = []if not root:return levelslevel = 0queue = deque([root,])while queue:# start the current levellevels.append([])# number of elements in the current level level_length = len(queue)for i in range(level_length):node = queue.popleft()# fulfill the current levellevels[level].append(node.val)# add child nodes of the current level# in the queue for the next levelif node.left:queue.append(node.left)if node.right:queue.append(node.right)# go to next levellevel += 1return levels
java递归解法:
class Solution {List<List<Integer>> levels = new ArrayList<List<Integer>>();public void helper(TreeNode node, int level) {// start the current levelif (levels.size() == level)levels.add(new ArrayList<Integer>());// fulfil the current levellevels.get(level).add(node.val);// process child nodes for the next levelif (node.left != null)helper(node.left, level + 1);if (node.right != null)helper(node.right, level + 1);}public List<List<Integer>> levelOrder(TreeNode root) {if (root == null) return levels;helper(root, 0);return levels;}
}
java迭代解法:
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> levels = new ArrayList<List<Integer>>();if (root == null) return levels;Queue<TreeNode> queue = new LinkedList<TreeNode>();queue.add(root);int level = 0;while ( !queue.isEmpty() ) {// start the current levellevels.add(new ArrayList<Integer>());// number of elements in the current levelint level_length = queue.size();for(int i = 0; i < level_length; ++i) {TreeNode node = queue.remove();// fulfill the current levellevels.get(level).add(node.val);// add child nodes of the current level// in the queue for the next levelif (node.left != null) queue.add(node.left);if (node.right != null) queue.add(node.right);}// go to next levellevel++;}return levels;}
}
LeetCode 102. Binary Tree Level Order Traversal--递归,迭代-Python,Java解法相关推荐
- LeetCode 102. Binary Tree Level Order Traversal
原题 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to rig ...
- LeetCode: 102. Binary Tree Level Order Traversal
题目 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to rig ...
- Leetcode 102. Binary Tree Level Order Traversal(二叉树的层序遍历)
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- LeetCode: 107. Binary Tree Level Order Traversal II
题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...
- LeetCode 107. Binary Tree Level Order Traversal II
LeetCode 107. Binary Tree Level Order Traversal II Solution1:我的答案 比102那道题多了一行代码... /*** Definition f ...
- 102. Binary Tree Level Order Traversal
题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...
- Leet Code OJ 102. Binary Tree Level Order Traversal [Difficulty: Easy]
题目: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ri ...
- [LeetCode] 102. Binary Tree Level Order Traversal_Medium tag: BFS
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- LeetCode之Binary Tree Level Order Traversal 层序遍历二叉树
题目描述: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ...
最新文章
- 线段树练习 3P3372 【模板】线段树 1
- python一年365天、初始水平值_2020年11月7日,20201107
- CSSE*PTC student tutoring program student lecturers of 2018-2019 Academic Year.
- 格式化输出浮点型变量
- Visual paradigm社区版下载及中文菜单的设置
- (原创)UML要点总结
- shiro学习(16):使用注解实现权限认证和后台管理二
- String类、StringBuffer类、StringBuilder类的区别
- mac上iphone4刷机与越狱(一)
- 树莓派无线投屏服务器,树莓派 Raspberry Pi 设置无线上网
- 电阻的寄生电感、寄生电容
- Oracle基本知识点总结
- 你我许的誓言也许抵不过岁月的云烟
- word生成电子签名
- 印象笔记的使用技巧总结
- 连接到mysql提示错误:The server time zone value is unrecognized or represents more than one time zone
- 清空缓冲区:fflush(stdin)、fflush(stdout)
- NOIP复赛中低级错误排行榜
- fedora23 安装tftpd
- 【TensorFlow】使用AlexNet网络对图片进行识别分类
热门文章
- 数字化如何影响药物开发
- SQLAlchemy简介与入门
- 第五课.高斯判别分析
- 全网最简单的网络图画法,小白福音包学包会
- COM:下一代微生物组技术在作物生产中的应用——局限性以及基于知识的解决方案的需求
- python使用matplotlib可视化、查看matplotlib可视化中不同字体形式、不同字号、斜体可视化的效果对比
- R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行YeoJohnson变换(将非正态分布数据列转换为正态分布数据、可以处理负数)、设置参数为YeoJohnson
- R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot)
- R语言数据排序函数sort, order rank实战
- R语言将字符型(Character)变量转化为数值型(Numeric)