题目地址:


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解法相关推荐

  1. 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 ...

  2. 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 ...

  3. 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, ...

  4. 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 ...

  5. LeetCode 107. Binary Tree Level Order Traversal II

    LeetCode 107. Binary Tree Level Order Traversal II Solution1:我的答案 比102那道题多了一行代码... /*** Definition f ...

  6. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  7. 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 ...

  8. [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, ...

  9. LeetCode之Binary Tree Level Order Traversal 层序遍历二叉树

    题目描述: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ...

最新文章

  1. 线段树练习 3P3372 【模板】线段树 1
  2. python一年365天、初始水平值_2020年11月7日,20201107
  3. CSSE*PTC student tutoring program student lecturers of 2018-2019 Academic Year.
  4. 格式化输出浮点型变量
  5. Visual paradigm社区版下载及中文菜单的设置
  6. (原创)UML要点总结
  7. shiro学习(16):使用注解实现权限认证和后台管理二
  8. String类、StringBuffer类、StringBuilder类的区别
  9. mac上iphone4刷机与越狱(一)
  10. 树莓派无线投屏服务器,树莓派 Raspberry Pi 设置无线上网
  11. 电阻的寄生电感、寄生电容
  12. Oracle基本知识点总结
  13. 你我许的誓言也许抵不过岁月的云烟
  14. word生成电子签名
  15. 印象笔记的使用技巧总结
  16. 连接到mysql提示错误:The server time zone value is unrecognized or represents more than one time zone
  17. 清空缓冲区:fflush(stdin)、fflush(stdout)
  18. NOIP复赛中低级错误排行榜
  19. fedora23 安装tftpd
  20. 【TensorFlow】使用AlexNet网络对图片进行识别分类

热门文章

  1. 数字化如何影响药物开发
  2. SQLAlchemy简介与入门
  3. 第五课.高斯判别分析
  4. 全网最简单的网络图画法,小白福音包学包会
  5. COM:下一代微生物组技术在作物生产中的应用——局限性以及基于知识的解决方案的需求
  6. python使用matplotlib可视化、查看matplotlib可视化中不同字体形式、不同字号、斜体可视化的效果对比
  7. R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行YeoJohnson变换(将非正态分布数据列转换为正态分布数据、可以处理负数)、设置参数为YeoJohnson
  8. R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot)
  9. R语言数据排序函数sort, order rank实战
  10. R语言将字符型(Character)变量转化为数值型(Numeric)