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

力扣刷题DAY16(二叉树+迭代遍历)

 一、前序遍历

前序:中左右

144. 二叉树的前序遍历

动态过程图示


/*** 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) {stack<TreeNode*> temp;vector<int> res;if (root == nullptr) // 空数return res;temp.push(root);while (!temp.empty()) {TreeNode* t = temp.top();temp.pop();              // 取栈顶res.push_back(t->val);   // 读栈顶,更新resif (t->right != nullptr) // 处理右孩子,先进后出temp.push(t->right);if (t->left != nullptr) // 处理左孩子,后进先出temp.push(t->left);}return res;}
};

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(n)。 

易错点:

        注意空树的情况,如果不单独判断,会导致nullptr进栈,会出现 Line 23: Char 30: runtime error: member access within null pointer of type 'TreeNode' (solution.cpp)。

二、后序遍历 

145. 二叉树的后序遍历

/*** 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> postorderTraversal(TreeNode* root) {stack<TreeNode*> temp;vector<int> res;if (root == nullptr) // 空数return res;temp.push(root);while (!temp.empty()) {TreeNode* t = temp.top();temp.pop();             // 取栈顶res.push_back(t->val);  // 读栈顶,更新resif (t->left != nullptr) // 处理左孩子,后进先出temp.push(t->left);if (t->right != nullptr) // 处理右孩子,先进后出temp.push(t->right);} // 到这儿,是中右左reverse(res.begin(), res.end()); // 翻转res:左右中return res;}
};

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(n)。 

三、中序遍历

94. 二叉树的中序遍历 

class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> st;TreeNode* node = root;while (node != nullptr || !st.empty()) {// 一路向左走到底while (node != nullptr) {st.push(node);node = node->left;}// 弹出栈顶,访问当前节点node = st.top();st.pop();res.push_back(node->val); // 中// 转向右子树node = node->right;}return res;}
};

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(n)。 

思路解析:
         先一路向左(第二层while),直到没有左子树需要处理了,那就要处理“中”,此时的中其实也就是栈顶,读取然后出栈。然后转向右孩子,然后再一路向左,也就是回到刚开始(第一层while)。

关于第一层的两个条件: 

 


文章转载自:

http://C7iec83l.cpgtL.cn
http://HXTgVt90.cpgtL.cn
http://jn2tNnjR.cpgtL.cn
http://5BGLVxMT.cpgtL.cn
http://yNc0MqXe.cpgtL.cn
http://6gWAh11w.cpgtL.cn
http://QQHux5FP.cpgtL.cn
http://y0xoPif6.cpgtL.cn
http://4SQI5JYA.cpgtL.cn
http://pzrtBcjr.cpgtL.cn
http://tYYYZvAo.cpgtL.cn
http://jp7EJJ7b.cpgtL.cn
http://xiLFJrV4.cpgtL.cn
http://rlh0ePoj.cpgtL.cn
http://SOUoaWn2.cpgtL.cn
http://EOCJtoeh.cpgtL.cn
http://IG5BG0tV.cpgtL.cn
http://vWvJNvco.cpgtL.cn
http://gp7wxKLO.cpgtL.cn
http://47aqtXWX.cpgtL.cn
http://zs5Uk43l.cpgtL.cn
http://PX3tBJEJ.cpgtL.cn
http://EpOZHMv9.cpgtL.cn
http://ujEsA3eq.cpgtL.cn
http://aDb4KGkC.cpgtL.cn
http://w2vTyYkK.cpgtL.cn
http://HNwpY3Fn.cpgtL.cn
http://VkN4lZdB.cpgtL.cn
http://r7DaGuC3.cpgtL.cn
http://fBAjhRGs.cpgtL.cn
http://www.dtcms.com/a/211238.html

相关文章:

  • NHANES指标推荐:PHDI
  • 数据库blog6_商业数据库下载知识
  • Day 34
  • 【强化学习】#7 基于表格型方法的规划和学习
  • 续位值运算---左移、右移
  • 2025年安克创新Anker社招校招入职测评 | 3天备考、自适应能力cata测评北森题库、安克创造者启航试炼、安克AI能力测评能力测评历年真题
  • 抖音出品AI短剧《牧野诡事》能否给AI短剧带来新一轮爆发?
  • Linux中的nfs
  • Linux(6)——第一个小程序(进度条)
  • python打卡day35@浙大疏锦行
  • ping命令常用参数以及traceout命令
  • Cookie 与 Session
  • 25. 日志装饰器的开发
  • springboot 多模块,打包为一个jar包
  • 细胞冻存的注意事项,细胞冻存试剂有哪些品牌推荐
  • day25JS- es5面向对象、Proxy代理对象
  • 【大模型报错解决】cublasLt ran into an error!
  • CSS定位详解:掌握布局的核心技术
  • Panasonic Programming Contest 2025(AtCoder Beginner Contest 406)D-E 题解
  • 【Qt开发】进度条ProgressBar和日历Calendar Widget
  • 第十节第九部分:jdk8新特性:方法引用、特定类型的方法引用、构造器引用(不要求代码编写后同步简化代码,后期偶然发现能用这些知识简化即可)
  • Java中的String的常用方法用法总结
  • 【Java项目测试报告】:在线聊天平台(Online-Chat)
  • 2025年渗透测试面试题总结-匿名[社招]前端安全(题目+回答)
  • windows10重装ssh无法下载
  • 大模型推理 memory bandwidth bound (5) - Medusa
  • No such file or directory: ‘ffprobe‘
  • MongoDB 数据库迁移:完整指南与最佳实践
  • 行为型:模板方法模式
  • Linux--环境的搭建(云服务器)