LeeCode-94. 二叉树的中序遍历

news/2024/9/16 3:40:38/文章来源:https://www.cnblogs.com/stephen2023/p/18397395

基本概念

  • 二叉树

BinaryTree

二叉树的结构如上图所示,由一系列左-中-右节点组成的树状数据结构,其基本结构如下所示,由一个中间节点向左右分叉成两个节点,故称二叉树。

BasicStrcture

  • 中序遍历

看二叉树基本的结构左-中-右三个节点,中间为Root,左边为Left,右边为Right。按顺序排列的话有C(3,2)=6种,其中左右,右左算法类似。以中间Root为参考,固定左-右,则排序 左-中-右 为中序遍历,中-左-右 为先序遍历,左-右-中 为后序遍历

解题思路

题目要求中序遍历,即对于所有的节点,都是左-中-右的顺序遍历所有节点,考虑到二叉树结构本身的特殊性,采用指针依次访问,比较难以遍历全局。考虑到整棵树本身可以看作一个基本节点,每个节点本身又是一个基本节点,如下图所示,类似想到递归调用。先写出基本结构的调用顺序,再依次对各子节点做递归调用。

BasicStrcture

实现代码

vector<int> inorderTraversal(TreeNode* root) {vector<int> result;if (root){if (root->left){auto temp = inorderTraversal(root->left);result.insert(result.end(), temp.begin(), temp.end());}result.push_back(root->val);if (root->right){auto temp = inorderTraversal(root->right);result.insert(result.end(), temp.begin(), temp.end());}}return result;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#自定义控件—仪表盘

C#用户控件之仪表盘 如何让温度、湿度、压力等有量程的监控值如仪表盘(DashBoard)一样显示?思路(GDI绘图): 定义属性:(仪表盘的半径、颜色、间隙;刻度圆的半径、颜色、字体;指针的颜色、占比;文本的字体、占比;) 绘制图形:(半圆、刻度、指针、中心、文本)定义属…

Linkedlist源码详解

介绍 LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java官方已经声明不…

创建一个SpringBoot项目,实现简单的CRUD功能和分页查询

背景 本博文主要是创建了一个新的SpringBoot项目,实现基本的增删改查,分页查询,带条件的分页查询功能。是方便初学者学习后端项目的一个比较清晰明了的实践代码,读者可根据博文,从自己动手创建一个新的SpringBoot项目,到使用PostMan测试基本请求,完完全全实践一遍,写出…

每天5分钟复习OpenStack(十五)Ceph与Bcache结合

上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速。1 ceph 架构 一个标准的ceph集群可能是如下的架构,SSD/NVME 存储元数据,而SATA盘存储数据。这样的架构下,物理介质的SATA盘读写速率上限决定了存储集群Ceph的上限(木桶效…

青岛-烟台-威海攻略

烟台 朝阳街-烟台山-所城里朝阳街 漫心酒店外小熊烟台山 烟台开埠陈列馆 烟台京剧艺术馆 冰心纪念馆 烟台地标 烟台山灯塔 旗袍博物馆所城里 宣化城墙金沙滩-滨海中路-渔人码头金沙滩城市展示中心 新城北街养马岛 可以在岛上租电驴 需要一整天酒店推荐烟台站附近 Day1 芝罘湾广…

探索Matplotlib-Gallery:Python数据可视化的游乐园

探索matplotlib-gallery:Python数据可视化的游乐园在数据科学的世界里,数据可视化是一个不可或缺的工具,它帮助我们理解数据、发现模式、并传达信息。Matplotlib是Python中最强大的数据可视化库之一,而其Gallery则是一个展示各种可视化技巧和图表类型的宝库。今天,我们将一…

freeRTOS源码解析4--task.c 2

4、task.c解析 时隔两年,还是决定继续把这个系统解析完成,有始有终。不过这次源码又从官网上下载了最新的,可能和我以前看的略有区别,但应该基本不影响理解。 接下来正式开始。4.1.3 新增或是遗漏的两个宏1 /* Returns pdTRUE if the task is actively running and not…

Charles - 夜神模拟器证书安装App抓包-charles监控手机出现unknown 已解决

1.Openssl安装 http://slproweb.com/products/Win32OpenSSL.html exe下载安装后进行配置 新建系统变量OPENSSL_HOME,变量值设为(绝对路径)软件安装目录下的bin 直接浏览 编辑用户变量path,新建%OPENSSL_HOME%,最后点击确定 查看openssl版本,输入命令:openssl version2.夜…

基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真

1.课题概述基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,对比UKF,EKF迭代UKF,迭代EKF四种卡尔曼滤波的控制效果。2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a%迭代扩展卡尔曼滤波 X_iukf = zeros(2, Times1); X_iukf(:,1) = state0; P_iukf = zeros(2…

支持大模型的小模型

https://www.arxiv.org/pdf/2408.12748 (SLM Meets LLM: Balancing Latency, Interpretability and Consistency in Hallucination Detection )平衡会话 AI 幻觉检测中的延迟、可解释性和一致性 介绍 大型语言模型(llm)在实时任务(如同步的会 话 ui)中与延迟作斗争。 当额外的…

基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序

1.算法运行效果图预览 (完整程序运行后无水印)将FPGA仿真结果导入到matlab显示结果:测试样本1测试样本2测试样本32.算法运行软件版本 vivado2019.2matlab2022a3.部分核心程序 (完整版代码包含注释和操作步骤视频)`timescale 1ns / 1ps // // Company: // Engineer: // //…

exkmp/Z函数

扩展 KMP/exKMP(Z 函数) 首先我们求出 \(ne\) 数组。代表 \(b\) 与 \(b\) 的每一个后缀的最长公共前缀长度。 我们设当前要求 \(ne_x\),且 \(k\) 为使得 \(p=k+ne_k-1\) 最大的位置且 \(0\le k<x\)。于是我们得到了两个蓝块相同。再通过这个图,得出两个绿块相等。