94 二叉树的中序遍历

news2024/11/16 11:48:39

在这里插入图片描述
解题思路:
\qquad 首先理解中序遍历:left node——root——right node
\qquad 中序遍历的起始点为该树最左边的非空元素。本题可以使用递归、DFS(迭代)解决。

递归法:
\qquad 重复的基础操作:输出root左边的所有节点,输出root的值,输出root右边的所有节点

	vector<int> inorderTraversal(TreeNode* root) {
      vector<int> v;
      inOrder(root, v);
      return v;
    }

    void inOrder(TreeNode* root, vector<int>& vec)
    {
        if(!root) return;
        inOrder(root->left, vec);
        vec.push_back(root->val);
        inOrder(root->right, vec);
    }

迭代法:
\qquad 利用栈,对二叉树进行深度优先搜索,按照“左 — 中 — 右”的方式输出。在此回顾一下C++ STL 栈(stack) 的用法:

StackLast In First Out (LIFO)复杂度
push()向栈顶添加元素O(1)
pop()移除栈顶元素O(1)
top()查看栈顶元素O(1)
size()栈中元素的数量O(1)
empty()判断栈是否为空 (空栈为 True)O(1)
vector<int> inorderTraversal(TreeNode* root) {
      vector<int> v;
      stack<TreeNode*> stk;
      while((root != nullptr) || !stk.empty())
      {
        while(root)
        {
            stk.push(root);
            root = root->left;
        }
        root = stk.top();
        v.push_back(root->val);
        stk.pop();
        root = root->right;
      }
      return v;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1967055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

甘肃西北风情贝壳面你吃过吗?

在西北的甘肃&#xff0c;有一种传统面食——麻食&#xff0c;以其独特的制作工艺和浓郁的地方风味&#xff0c;成为了当地人民餐桌上的宠儿。麻食&#xff0c;又被称为“麻什”“麻食子”等&#xff0c;是一种手工搓制而成的面食。它的形状酷似猫耳朵&#xff0c;小巧玲珑&…

超有趣的视觉欺骗

by 游梦 关键词&#xff1a;蜘蛛侠、室内映射、假室内 大家一起先找茬&#xff0c;半分钟找出下图中穿帮镜头 &#xff08;图源&#xff1a;https://zhuanlan.zhihu.com/p/159439811&#xff09; 答案揭晓&#xff1a; 可以看到室内门的位置&#xff0c;在建筑不同视角下的位…

为 Laravel 提供生产模式下的容器化环境:打造现代开发环境的终极指南

为 Laravel 提供生产模式下的容器化环境&#xff1a;打造现代开发环境的终极指南 在现代开发中&#xff0c;容器化已经成为一种趋势。使用 Docker 可以让我们轻松地管理和部署应用程序。本文将带你一步步构建一个高效的 Laravel 容器化环境&#xff0c;确保你的应用程序在开发…

Modbus从站模拟软件

下载地址&#xff1a; Modbus从站模拟软件资源-CSDN文库

linux创建用户并免密切换

useradd ansible passwd ansible 加入到wheel组 sudo usermod -G wheel ansible 编辑文件visudo ansible ALL(ALL) NOPASSWD:ALL chage -M 99999 ansible #设置密码永不过期

2024上半年热门内容透视 | 品牌种草解析

2024年上半年&#xff0c;小红书平台“考公上岸”、“不确定性”、“重养自己一遍”、“人生是旷野”、“原生家庭顶配”等话题热议之下&#xff0c;透露着消费者怎样的需求&#xff1f; 综合热门内容及小红书用户的分享发现&#xff0c;变数和不确定性成为新常态&#xff0c;消…

PTrade常见问题系列18

客户反馈某代码L1快照有延迟&#xff1f; 客户反馈某代码9.30.12的快照在9.30.12策略没有获取到&#xff0c;在9.30.17才获取到&#xff1f; 1、由于交易所的快照不是严格按照3s下发的&#xff0c;例如快照在9.30.12.300更新了&#xff0c;客户策略在9.30.12.100执行到&#…

什么是文档签名证书?如何获取文档签名证书?

在数字化高速发展的当今时代&#xff0c;各行各业都开始向数字化转型&#xff0c;随着国家大力倡导和积极推进数字化&#xff0c;电子文件的应用越来越广泛。然而&#xff0c;电子文件包含了个人隐私、金融交易、电子处方、合同协议等敏感信息&#xff0c;如何确保这些重要文件…

Python开发框架FastAPI系列(1. 初体验)

本文为系列文章Python开发框架FastAPI系列的第一部分。 缘起 其实Python的Web开发框架已经有很多了&#xff0c;包括老将Django和后起之秀Flask都做得很好&#xff0c;各有各的特色。那么为什么FastAPI作为一个后来者&#xff0c;短时间内就人气飙升呢&#xff1f;我也是看到…

【linux】【操作系统】初始化程序之main.c源码阅读

/init/main.c是Linux操作系统启动过程的核心部分&#xff0c;它负责初始化硬件、设备、内存和系统服务&#xff0c;以及启动第一个用户进程&#xff0c;为后续的系统运行奠定基础。 详细解析 1. 内联函数定义 fork, pause, setup, sync: 这些函数被声明为内联&#xff0c;意…

解决secureCRT乱码设置UTF-8显示中文

永久性配置UTF-8 在SecureCRT的安装文件夹中搜索“Default.ini” 找到D:“Filenames Always Use UTF8”00000000&#xff0c;将最后的0变成1&#xff0c;即&#xff1a;D:“Filenames Always Use UTF8”00000001 将S:”Output Transformer Name”Default修改为S:”Output Tran…

如何使用 PHP Simple HTML DOM Parser 轻松获取网页中的特定数据

背景介绍 网页数据的抓取已经成为数据分析、市场调研等领域的重要工具。无论是获取产品价格、用户评论还是其他公开数据&#xff0c;网页抓取技术都能提供极大的帮助。今天&#xff0c;我们将探讨如何使用 PHP Simple HTML DOM Parser 轻松获取网页中的特定数据。PHP Simple H…

SPSSAU | 最好最差权重BWM原理及案例实操分析

BWM&#xff08;best-worse-method&#xff0c;最好最差法&#xff09;是一种多准则决策方法&#xff0c;由Jafar Rezaei于2015年提出&#xff0c;其通常用于确定决策标准的权重。其原理是比如5个指标&#xff0c;如果以前AHP就需要5个指标两两的相对重要性数据。但是现在简化为…

CSS实现文本溢出处理

1.单行文本溢出 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

如何利用DFMEA优化产品设计?

在快节奏的产品开发周期中&#xff0c;DFMEA如同一双锐利的眼睛&#xff0c;帮助团队在设计初期就识别并预防潜在的问题。它不仅仅是一种分析方法&#xff0c;更是一种系统化的思维工具&#xff0c;通过深入分析每个设计元素可能发生的失效模式、原因、影响及严重程度&#xff…

Vue3父子组件传属性和方法调用Demo

Vue3父子组件传属性和方法调用Demo 说明目录父组件给子组件传值和方法父组件给子组件传值-使用defineProps接受父组件属性值父组件给子组件传值-使用defineModel接受父组件v-model值当子组件只需要接收父组件一个v-model值时,写法1如下:子组件接收单个v-model写法2如下:当子组件…

设计界的新宠:5款热门UI在线设计软件评测

随着用户界面设计行业的蓬勃发展&#xff0c;越来越多的设计师进入用户界面设计。选择一个方便的用户界面设计工具尤为重要&#xff01;除了传统的用户界面设计工具&#xff0c;在线用户界面设计工具也受到越来越多设计师的青睐。这种不受时间、地点、计算机配置限制的工作方法…

12. 计算机网络TCP四次挥手

1. 前言 上一章节分析了 TCP 建立连接的过程,既然有建立连接,对应的也有断开连接。数据传输完成之后,客户端和服务器端保持通信状态会占用资源开销,所以需要断开连接,TCP 协议中断开连接也被称为 TCP 四次挥手。 2.1 TCP 四次挥手 面试官提问: 说明一下 TCP 断开连接的…

Azure AD 配置角色,在Blazor中从Claims读取角色

首先是在 Microsoft Entra admin center 中配置你的应用程序角色 然后分配用户到你创建的角色 1. 首先从下图找到你要配置的程序 2. 然后找到分配用户到角色的地方 选择用户 再选择角色 这样就成功给用户分配了权限 接下来就可以在Blazor页面中读取了 using Microsoft.AspNe…