首页 > 其他分享 >力扣 107. 二叉树的层序遍历 II

力扣 107. 二叉树的层序遍历 II

时间:2022-10-27 14:37:47浏览次数:82  
标签:node arr 遍历 res 层序 II 二叉树 root 节点

107. 二叉树的层序遍历 II

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[15,7],[9,20],[3]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

题解

思路和力扣 103. 二叉树的锯齿形层序遍历 [内存优化], 很相似,实验了queue,最后选用vector替代queue
class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector<vector<int>> res;
        if(root==nullptr){
            return res;
        }
        vector<TreeNode*> arr;//记录每层节点(会一直更新和清理旧节点)
        arr.emplace_back(root);
        while(!arr.empty()){
            int len=arr.size();
            int *layer=new int[len];
            vector<TreeNode *> tmp;//记录下一层节点
            int cnt=0;
            for (auto& node : arr) {//当前层节点遍历
                layer[cnt++]=node->val;
                if (node->left) {
                    tmp.emplace_back(node->left);
                }
                if (node->right) {
                    tmp.emplace_back(node->right);
                }
            }
            res.emplace_back((vector<int>){layer,layer+len});
            arr = move(tmp);//将下一层节点全部移动给arr
        }
        reverse(res.begin(),res.end());
        return res;
    }
};

 

标签:node,arr,遍历,res,层序,II,二叉树,root,节点
From: https://www.cnblogs.com/fudanxi/p/16832113.html

相关文章

  • python决策树(二叉树、树)的可视化
    问题描述在我学习​​机器学习实战-决策树​​部分,欲可视化决策树结构。最终可视化结果:解决方案决策树由嵌套字典组成,如:{“nosurfacing”:{0:“no”,1:{“flippers”:......
  • 二叉树n2和n0的关系
    前提对于一个有n个节点的二叉树,有n-1条边(0节点不连边,其他节点一条边)\(n_i\)表示儿子个数为\(i\)的节点个数推导首先,所有节点个数之和为\(n\),有:\[n_0+n_1+n_2=......
  • 你了解二叉树,平衡二叉树,红黑树吗
    前言面试过程中,多多少少会问一点数据结构(二叉树)的问题,今天我们来复习一下二叉树的相关问题,文末总结。1.二叉树的由来在jdk1.8之前,HashMap的数据结构由「数组+链表」......
  • 代码随想录训练营第十五天 | 层序遍历 10,226.翻转二叉树 ,101.对称二叉树 2
    今天是训练营的第十五天,继续二叉树方面的学习 迭代法遍历:前序:classSolution{publicList<Integer>preorderTraversal(TreeNoderoot){Stack<TreeNo......
  • 刷题 二叉树1
    代码随想录LeetCode144. 二叉树的前序遍历LeetCode145. 二叉树的后序遍历LeetCode94. 二叉树的中序遍历carl二叉树遍历#递归思路递归的写法:CS106b中关于......
  • 从排序阵列中删除重复 II
    题目来源​​RemoveDuplicatesfromSortedArrayII​​问题描述“删除重复项目”的进阶:如果重复最多被允许两次,又该怎么办呢?例如:给定排序数列nums=[1,1,1,2,2,3]......
  • 63 不同路径 II
    题目63不同路径一个机器人位于一个 mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图......
  • ASCII码经典对照图
    ASCII码经典对照图......
  • 二叉树--判断两棵树是否一样
    100. SameTreeEasy124942FavoriteShareGiventwobinarytrees,writeafunctiontocheckiftheyarethesameornot.Twobinarytreesareconsideredthesameif......
  • 【leetcode_C++_字符串_day7】344_反转字符串&541_反转字符串II&&剑指Offer_05_替换空
    344.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)......