LeetCode-102. Binary Tree Level Order Traversal
来源:互联网 发布:华为硬件单片机笔试题 编辑:程序博客网 时间:2024/06/18 14:52
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]
]
方法一
迭代实现
借助一个队列实现。
思路
- 首先将根节点存入队列中。
- 在取出队列中的首元素前,需要判断该元素是否有左右孩子,如果该元素有左右孩子,则将其左右孩子存入队列中,再将队列的首元素取出存入用来保存每一层的List中。
- 需要一个变量来记录当前层的总节点数,以此来决定步骤2的重复次数。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<List<Integer>>(); if(root==null) return res; Queue<TreeNode> queue=new LinkedList<>(); queue.add(root); while(!queue.isEmpty()) { List<Integer> tempList=new ArrayList<>(); int levelNum=queue.size(); for(int i=0;i<levelNum;++i) { if(queue.peek().left!=null) queue.add(queue.peek().left); if(queue.peek().right!=null) queue.add(queue.peek().right); tempList.add(queue.poll().val); } res.add(tempList); } return res; }}
方法二
递归实现
递归时需要有个变量来记录当前递归到的层数,以此来决定在返回结果哪个一维数组中添加数值。
整个过程类似二叉树的先序遍历。
class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<List<Integer>>(); levelOrderHelper(root,res,0); return res; } private void levelOrderHelper(TreeNode root,List<List<Integer>> res,int height) { if(root==null) return; if(height>=res.size()) res.add(new ArrayList<Integer>()); res.get(height).add(root.val); levelOrderHelper(root.left,res,height+1); levelOrderHelper(root.right,res,height+1); }}
阅读全文
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
- 零基础学python-python基础(2)-变量
- 垃圾收集器与内存分配策略
- Redis 集群的安装(Redis+CentOS)
- OSI七层模型
- 指针变量与常规变量的指向数据域的区别
- LeetCode-102. Binary Tree Level Order Traversal
- Couldn't import dot_parser, loading of dot files will not be possible.
- MySQL —— 约束
- Mybatis入门一
- 网易面试 合唱团
- 1205: 杨八方的英语问题
- python-快速使用urllib爬取网页(8-URLError)
- 蓝桥杯: 入门训练 A+B问题
- Android------视频播放器(包含全屏播放,快退,快进,腾讯新闻的列表播放等)