107.二叉树的层序遍历II

最近在搞算法,也是在网上找了很多的资源去学习,下面就分享一道leetcode的算法题,也算提供一种思路。

给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7],
在这里插入图片描述
题目链接
https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/

这道二叉树的题目我们就借助队列来完成

class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
    	//保存得到的结果
        List<List<Integer>> resList = new ArrayList<>();
        //判断是否为空
        if(root==null){
            return resList;
        }
        //创建一个队列,借助队列来完成层级的遍历
        Queue<TreeNode> queue = new LinkedList<>();
        //offer在尾部添加元素
        queue.offer(root);
        //当队列不为空时,则
        while(!queue.isEmpty()){
        	//创建一个List
            List<Integer> integerList=new ArrayList<>();
            //获取queue的长度
            int len = queue.size();
            //当len大于0进入循环
            while(len>0){
            //poll删除并返回
                TreeNode tpnode = queue.poll();
                //将tpnode的值加入到刚才创建的列表里面
                integerList.add(tpnode.val);
                //然后分别加入左右子树
                if(tpnode.left != null){
                    queue.offer(tpnode.left);
                }
                if(tpnode.right !=null){
                    queue.offer(tpnode.right);
                }
                //这里减去已经出来的第一个结点
                len--;
            }
            resList.add(integerList);
        }
        //从后往前遍历再放入新数组里面
        List<List<Integer>> result = new ArrayList<>();
        for (int i = resList.size() - 1; i >= 0; i-- ) {
            result.add(resList.get(i));
        }
        return result;
    }
}

下面的过程希望帮助大家理解,字有点丑,见谅,本来想做动图的,但是有点费时间,所以别人的原创作品真的值得尊敬,所以不要随便抄袭别人的成果。
在这里插入图片描述
大家可以自己动手写一写,自己的写出来才是自己的
大家想学习二叉树也可以看这个网站
代码随想录https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈鸣coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值