leetcode | 107. 二叉树的层序遍历 II | javascript实现 | c++实现
题目
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
思路
题目的要求相当于是求层序遍历数组的转置,我们只需利用js的unshift对返回数组进行头插法即可
代码
JavaScript实现
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @return {number[][]} */ var levelOrderBottom = function(root) { let curLayer = 0; // 当前层节点数 let nextLayer = 0; // 下一层节点数 let layer = []; // 存储当前层节点列表 let queue = []; // 队列 let front; // 队头 let res = []; // 返回 if (root) { queue.push(root); curLayer++; } while (queue.length) { front = queue.shift(); layer.push(front.val); if (front.left) { queue.push(front.left); nextLayer++; } if (front.right) { queue.push(front.right); nextLayer++; } if (--curLayer === 0) { curLayer = nextLayer; nextLayer = 0; res.unshift(layer); layer = []; } } return res; };
c++
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<int> layer; queue<TreeNode*> q; TreeNode* front; vector<vector<int>> res; int curLayer = 0; int nextLayer = 0; if (root) { q.push(root); curLayer++; } while (!q.empty()) { front = q.front(); q.pop(); layer.push_back(front->val); if (front->left) { q.push(front->left); nextLayer++; } if (front->right) { q.push(front->right); nextLayer++; } if (--curLayer == 0) { curLayer = nextLayer; nextLayer = 0; res.push_back(layer); layer.clear(); } } // reverse int idx = res.size() - 1; for (int k = 0; k < idx; k += 1, idx--) { layer = res[idx]; res[idx] = res[k]; res[k] = layer; } return res; } };
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战