当前位置: 首页 > news >正文

算法练习:JZ32 从上往下打印二叉树

思路:使用队列层次遍历二叉树
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:vector<int> PrintFromTopToBottom(TreeNode* root) {vector<int> nums;queue<TreeNode*> q;TreeNode* current = NULL;// Step1.特殊情况处理if(root == NULL) return nums;// Step2.根结点入队q.push(root);// Step3.遍历二叉树while(q.empty() != true){// 将队列首结点取出,并将值放入nums中current = q.front();q.pop();nums.push_back(current->val);// 将左右结点放入队列,作为下一次处理的对象        if(current->left != NULL)q.push(current->left);if(current->right != NULL)q.push(current->right);}return nums;}
};
思路二:使用二维数组递归遍历二叉树
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:void recursion(TreeNode* root, vector<vector<int>> &nums, int depth){// Step0.特殊情况处理if(root){// Step1.将当前结点值放入numsif(nums.size() < depth+1)nums.push_back(vector<int>{});nums[depth].push_back(root->val);// Step2.递归左右子结点if(root->left) recursion(root->left, nums, depth+1);if(root->right) recursion(root->right, nums, depth+1);} }vector<int> PrintFromTopToBottom(TreeNode* root) {vector<int> results;// Step0.特殊情况处理if(root == NULL) return results;// Step1.递归遍历二叉树,将值按深度放入numsvector<vector<int>> nums;   // 第一维表示二叉树的深度,第二维表示该深度的元素int depth = 0;recursion(root, nums, depth);// Step2.将输出nums的值放入一维数组中for(int i=0; i<nums.size(); i++)for(int j=0; j<nums[i].size(); j++)results.push_back(nums[i][j]);return results;}
};

运行时间:4ms 占用内存:548KB

http://www.dtcms.com/a/308410.html

相关文章:

  • iOS高级开发工程师面试——其他
  • 磁盘坏道检测工具在美国服务器硬件维护中的使用规范
  • Linux 计划任务管理
  • 【在线五子棋对战】十一、整合封装服务器模块实现
  • linux git ssh配置过程
  • chrome.storage 和 localStorage
  • 自动化与配置管理工具 ——SaltStack
  • 用 AI 自动生成口型同步视频,短视频内容也能一人完成
  • 基于深度学习的医学图像分析:使用YOLOv5实现医学图像目标检测
  • 测试平台进化论:如何在CI/CD时代重构软件质量防线
  • # 前端开发规范基础汇总
  • 掌握Python三大语句:顺序、条件与循环
  • 深度解析:基于Python构建的闲鱼自动化营销与信息发送机器人
  • 暄桐:如何脱离“不学无术”的状态?
  • 集成学习方法之随机森林:从原理到实战的深度解析
  • pip库版本升级
  • vue vxe-table :edit-config=“editConfig“ 可以编辑的表格
  • Netcat终极实战指南:从端口扫描到渗透测试
  • Multimodal Fusion on Low-quality Data: A Comprehensive Survey 中文版
  • Java面试高频题目
  • 基于notepad++的sensor寄存器序列文本处理方法(以后会随时更新补充)
  • STM32F1到STM32F0的标准库移植指南--GPIO篇
  • 认知绞肉机:个体实践视域下认知暴力与元认知升维的活体实验研究
  • 如何将 Redis 监控集成到微服务整体的监控体系中( 如 Prometheus + Grafana)
  • [12月考试] E
  • 使用EasyPOI实现Java订单数据导出(含多物料信息)——模板语法详解与实战
  • Redis实战(4)-- BitMap结构与使用
  • uvicorn 启动重复加载 多次加载
  • 【LeetCode 热题 100】4. 寻找两个正序数组的中位数——(解法一)线性扫描
  • C++(模板)