🌻算法,不如说它是一种思考方式🍀
算法专栏: 👉🏻123
可以参考👉LeetCode:二叉树的前、中、后序遍历——如何创建一棵【二叉树】
一、🌱102. 二叉树的层序遍历
- 题目描述:给你二叉树的根节点
root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 - 来源:力扣(LeetCode)
- 难度:中等
- 提示:
树中节点数目在范围 [0, 2000] 内
-1000 <= Node.val <= 1000 - 示例
🌴解题
1.递归法
也就是使用先序遍历,根据对每一层的深度来考虑增加集合元素,原理是很简单的,判断好递归何时结束即可。
- code:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
int deepth=1;
List<List<Integer>> ans=new ArrayList<>();//保存输出结果的集合
if(root==null)
return ans;
List<Integer> list=new ArrayList<>();//每一层的临时集合
visit(root,list,ans,deepth);//开始遍历
return ans;
}
private static void visit(TreeNode node, List<Integer> list,List<List<Integer>> ans, int deepth) {
if(node!=null) {
//当前节点,以及是否可以继续下行
if (ans.size() >= deepth)
ans.get(deepth-1).add(node.val);
else {
list.add(node.val);
ans.add(new ArrayList<>(list)