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

二叉树的前序遍历-力扣

  • 二叉树的前序遍历,指先遍历中间节点,然后遍历左节点,然后遍历右节点,按照这个顺序进行递归即可。
/*** 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:void traversal(TreeNode* cur, vector<int>& vec){if(cur == nullptr){return;}vec.push_back(cur->val);traversal(cur->left, vec);traversal(cur->right, vec);}vector<int> preorderTraversal(TreeNode* root) {vector<int> result;traversal(root, result);return result;}
};
  • 二叉树的前序遍历,使用迭代的方法,首先将根节点入栈,然后出栈,然后将右节点入栈,左节点入栈, 这样能够确保出栈的顺序是 左节点,右节点。
/*** 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<int> preorderTraversal(TreeNode* root) {vector<int> result;stack<TreeNode*> st;TreeNode* cur = root;st.push(root);while(cur!= nullptr && !st.empty()){cur = st.top();st.pop();result.push_back(cur->val);if(cur->right != nullptr){st.push(cur->right);}if(cur->left != nullptr){st.push(cur->left);}}return result;}
};

注,在写完看代码随想录时,发现他在while循环处的条件只有 !st.empty(), 原因是它在前面将root入栈时,首先对root是否为空进行了判断,所以在循环处无需在进行判断。

http://www.lryc.cn/news/369611.html

相关文章:

  • 千问Qwen7B chat:本地部署及网页端使用
  • (27)ADC接口--->(002)FPGA实现AD7606接口
  • 设计模式-设计模式分类
  • 重邮计算机网络803-(1)概述
  • 党史馆3d网上展馆
  • 小心人工智障
  • [AIGC] 自定义Spring Boot中BigDecimal的序列化方式
  • ubuntu20.04设置文件开机自启动
  • 盛水最多的容器
  • PCIe——学习计划
  • 使用 TinyEngine 低代码引擎实现三方物料集成
  • 武汉理工大学云计算与服务计算——7.容器技术习题
  • idea项目启动报错org/springframework/cloud/client/circuitbreaker/Customizer
  • 贪 吃 蛇
  • 多人中招!企业裁员前的十大征兆!
  • R语言:使用 tidyr 进行数据整理
  • 帝国CMS火车头采集发布模块详细使用方法
  • Unity 数据存储
  • Doris 少数SQL在Datagrip无法执行,而在DorisUI或程序调用可以执行的问题
  • 若依RuoYi-Vue分离版—配置多数据源
  • 电子科技大学卓中卓二轮——分析笔记
  • 代码随想录算法训练营第三十五天|1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
  • 鸿蒙开发HarmonyOS Next 网络框架retrofit 封装 viemodel使用
  • 什么是SpringMVC
  • 【PowerDesigner】PDM生成建表脚本
  • React实现在线预览word报告/本地选择报告预览
  • 计算机哈佛架构、冯·诺依曼架构对比
  • 单片机串口发送为空中断和发送完成中断有什么区别?
  • css特效:对多个tag标签实现模拟地球仪特效
  • 【2024Python教程】Python文件打包成exe,如果有图片怎么打包?有手就会的超简单教程