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

2024王道408数据结构P144 T16

2024王道408数据结构P144 T16

思考过程

  1. 首先看题目,要求我们把二叉树的叶子结点求出来并且用链表的方式存储,链接时用叶结点的右指针来存放单链表指针。我们很清楚可以看出来能用中序遍历+递归的方式实现,因为第一个叶子结点在整棵树的最左下角。
  2. 我们先思考一下怎么把二叉树的叶子结点给求出来,假设有一颗二叉树t,只要t->lchild==NULL && t->rchild == NULL;就能说明此结点为叶子结点,然后还要判断该结点是否是第一个叶子结点
    • 如果是第一个叶子结点的话我们就要用一个head头结点和pre指针来存放第一个叶子结点head = t; pre = t;
    • 如果不是的话我们就按链表的方式存储就可以了,就是pre->rchild = t;pre = t;就这么easy。

举个例子

  1. 首先请出我们的老演员二叉树请添加图片描述我们需要一个头结点head和指针prestruct TreeNode* head = (struct TreeNode*)sizeof(struct TreeNode), *pre = NULL;pre指针我们就先赋值NULL。
  2. 然后我们直接开始递归到最左边的结点也就是结点D,Inorder(t->lchild);因为是中序遍历,先访问左子树。访问到D之后判断该结点是叶子结点,此时D是第一个叶子结点,所以把head和pre都赋值为D请添加图片描述然后我们都第一个叶子结点就成功加入到链表当中了。
  3. 然后代码回溯到结点B,再去找B到右子树E。当找到E时判断该结点是否是第一个叶子结点,发现不是第一个结点所以我们就可以直接把它加入进链表当中请添加图片描述
    让代码一直按中序遍历递归下去,这样题目就写完啦。

完整代码

//
// Created by 黎圣  on 2023/8/25.
//
#include "iostream"
typedef struct TreeNode
{char data;struct TreeNode *lchild, *rchild;
}*tree;
void CreateTree(tree &t)
{char ch = getchar();if (ch == '#')t = NULL;else{t = (struct TreeNode *)malloc(sizeof(struct TreeNode));t->data = ch;t->lchild = NULL;t->rchild = NULL;CreateTree(t->lchild);CreateTree(t->rchild);}
}
struct TreeNode *pre = NULL, *head = (struct TreeNode*)malloc(sizeof(struct TreeNode));
tree Inorder(tree &t)
{if (t){Inorder(t->lchild);if (t->lchild == NULL && t->rchild == NULL){//是否是第一个//是if (pre == NULL){head = t;pre = t;}//不是第一个else{pre->rchild = t;pre = t;}}Inorder(t->rchild);}return head;
}
int main()
{tree t;CreateTree(t);//ABD##E##CF##G##Inorder(t);while (head){printf("%c ", head->data);head = head->rchild;}return 0;
}

最后感谢b站up主@吸血小金鱼

相关文章:

2024王道408数据结构P144 T16

2024王道408数据结构P144 T16 思考过程 首先看题目,要求我们把二叉树的叶子结点求出来并且用链表的方式存储,链接时用叶结点的右指针来存放单链表指针。我们很清楚可以看出来能用中序遍历递归的方式实现,因为第一个叶子结点在整棵树的最左下…...

【ARM Coresight 系列文章 22 -- linux frace 与 trace-cmd】

文章目录 ftrace 介绍trace-cmd 介绍trace-cmd 常用跟踪事件ftrace 与 trace-cmd 关系ftrace 编译依赖 ftrace 介绍 ftrace 是 Linux 内核中的一个跟踪工具,主要用于帮助开发者分析和调试内核的行为。ftrace 的名字来源于 “function tracer”,它最初是…...

MyBatis的一级缓存和二级缓存是怎么样的?

目录 1. 一级缓存 2. 一级缓存失效的几种情况 3. 二级缓存 4.二级缓存失效的情况 5. 二级缓存的相关配置 6. 缓存的查询顺序 MyBatis 的缓存共分为一级缓存和二级缓存。 1. 一级缓存 一级缓存是 SqlSession 级别的,通过同一个 SqlSession 查询到的数据会被缓…...

下载的文件被Windows 11 安全中心自动删除

今天从CSDN上下载了自己曾经上传的文件,但是浏览器下载完之后文件被Windows安全中心自动删除,说是带病毒。实际是没有病毒的,再说了即便有病毒也不应该直接删除啊,至少给用户一个保留或删除的选项。 研究了一番,可以暂…...

【Java List与数组】List<T>数组和数组List<T>的区别(124)

List数组:存储List的数组,即:数组中的元素是:List; 数组List:存储数组的List,即:List中的数据是类型的数组; 测试案例: import java.util.ArrayList; impor…...

Nuxt 菜鸟入门学习笔记四:静态资源

文章目录 public 目录assets 目录全局样式导入 Nuxt 官网地址: https://nuxt.com/ Nuxt 使用以下两个目录来处理 CSS、fonts 和图片等静态资源: public 目录 public 目录用作静态资产的公共服务器,可通过应用程序定义的 URL 公开获取。 换…...

C语言 - 结构体、结构体数组、结构体指针和结构体嵌套

结构体的意义 问题:学籍管理需要每个学生的下列数据:学号、姓名、性别、年龄、分数,请用 C 语言程序存储并处理一组学生的学籍。 单个学生学籍的数据结构: 学号(num): int 型姓名(…...

python安装playwright问题记录

python安装playwright这个时候,有得时候会https timeout 有的时候会 not found。 我最后使用的方法三,挺好用的。 PyPI The Python Package Index 可以尝试使用的方法 1. 更换pip源:使用国内的pip源可以提高下载速度并减少超时问题。例如&#xff0c…...

关于gRPC微服务利弊之谈

gRPC微服务架构包括以下几个主要组件: 服务定义:定义服务的接口和消息格式,使用Protocol Buffers或其他的消息格式进行描述。服务实现:实现定义的服务接口和消息处理逻辑。服务器端实现:在服务器端,需要实…...

【Terraform学习】使用 Terraform创建Lambda函数启动EC2(Terraform-AWS最佳实战学习)

本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…...

Mac软件删除方法?如何删除不会有残留

Mac电脑如果有太多无用的应用程序,很有可能会拖垮Mac系统的运行速度。因此,卸载电脑中无用的软件是优化Mac系统运行速度的最佳方式之一。Mac卸载应用程序的方式是和Windows有很大的区别,特别对于Mac新用户来说,如何无残留的卸载删…...

编程之道:【性能优化】提高软件效率的实际建议和避免常见陷阱

在今天的数字化世界中,软件性能是应用程序成功的关键之一。无论是网页加载速度、移动应用的响应时间还是后端服务器的处理速度,性能都直接影响着用户满意度。在追求高性能时,开发人员需要采取一系列实际建议,同时避免常见的陷阱。…...

VGG的结构:视觉几何组(Visual Geometry Group)

目录 1. VGG 的结构 2. VGG 的网络细节 3. VGG 的代码实现 1. VGG 的结构 牛津大学的视觉几何组(Visual Geometry Group)设计了 VGGNet(也称为 VGG),一种经典的卷积神经网络 (CNN) 架构。在 2014 年 ILSVRC 分类任务中,VGG 取…...

VBA:按照Excel工作表中的名称列自动汇总多个工作薄中对应sheet中所需要的数据

需求如下: B列为产品名为合并单元格,C列为供应商名,G、H列为金额数据;数据源放在同一个文件夹内,B列产品名来源于工作薄名称中间的字符串,C列供应商名来源于工作薄中的sheet名;G、H列金额数据来…...

Mybatis1.9 批量删除

1.9 批量删除 1.9.1 编写接口方法1.9.2 编写SQL语句1.9.3 编写测试方法 如上图所示,用户可以选择多条数据,然后点击上面的 删除 按钮,就会删除数据库中对应的多行数据。 1.9.1 编写接口方法 在 BrandMapper 接口中定义删除多行数据的方法。…...

CUDA小白 - NPP(2) -图像处理-算数和逻辑操作(2)

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…...

python+redis实现布隆过滤器(含redis5.0版本以上和5.0以下版本的两份代码)

布隆过滤器是一种空间效率极高的概率数据结构,用于测试一个元素是否是集合的成员。如果布隆过滤器返回 False,则元素绝对不在集合中。如果返回 True,则元素可能在集合中,但也可能是一个误报。布隆过滤器利用了多个不同的哈希函数对…...

SpringBoot Thymeleaf iText7 生成 PDF(2023/08/29)

SpringBoot Thymeleaf iText7 生成 PDF(2023/08/29) 文章目录 SpringBoot Thymeleaf iText7 生成 PDF(2023/08/29)1. 前言2. 技术思路3. 实现过程4. 测试 1. 前言 近期在项目种遇到了实时生成复杂 PDF 的需求,经过一番…...

【核磁共振成像】并行采集MRI

目录 一、并行成像二、SENSE重建三、SMASH重建四、灵敏度校准五、AUTO-SMASH和VD-AUTO-SMASH六、GRAPPA重建七、SPACE RIP重建算法八、PILS重建算法九、PRUNO重建算法十、UNFOLD算法 一、并行成像 并行MR成像(pMRI):相位阵列接受线圈不但各有自己专用的接受通道,而且…...

深度图相关评测网站

文章目录 1 单目/Stereo相关测评网站介绍12 单目/Stereo相关测评网站介绍23 单目/Stereo相关测评网站介绍3 1 单目/Stereo相关测评网站介绍1 https://vision.middlebury.edu/stereo/eval3/ 2 单目/Stereo相关测评网站介绍2 http://www.cvlibs.net/datasets/kitti/eval_stereo…...

Agent工程2026:从提示词堆砌到生产级智能体的完整跃迁路径

如果你今天还在用"给LLM加几个工具调用"来描述你的Agent,那我们需要认真谈谈了。 2026年的AI工程现实是:绝大多数Agent项目死在了从Demo到生产的路上。不是因为模型不够强,而是因为工程没跟上。本文会系统梳理Agent工程化的核心路…...

Source Han Serif CN:开源中文字体跨平台部署完全指南

Source Han Serif CN:开源中文字体跨平台部署完全指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为项目中的中文字体选择而纠结吗?既要考虑版权合规&a…...

CST仿真效率翻倍:手把手教你设置激励与优化器,搞定天线阵列参数优化

CST仿真效率翻倍:手把手教你设置激励与优化器,搞定天线阵列参数优化 天线阵列设计是射频工程师的日常挑战之一。当你在CST中完成基础建模后,真正的考验才刚刚开始——如何高效配置激励、选择合适的优化器,并快速获得准确的仿真结果…...

全志V853开发板音频系统实战:从ALSA驱动到应用开发全解析

1. 项目概述:从一块开发板到音频系统的构建最近在折腾百问网的100ASK_V853-PRO开发板,这块板子搭载了全志V853这颗高性能AIoT芯片,资源相当丰富。官方资料和社区讨论大多聚焦在其NPU算力、摄像头接入和图像识别上,但我在实际项目中…...

从“收音机”到“手机芯片”:聊聊CMOS单级放大器在真实产品里的那些事儿

从“收音机”到“手机芯片”:CMOS单级放大器的工业进化史 上世纪60年代,当第一台全晶体管收音机问世时,工程师们或许不会想到,那些分立元件组成的放大器电路,有朝一日会以纳米级尺寸被集成在指甲盖大小的芯片里。CMOS单…...

云原生安全扫描:保护容器化应用的安全

云原生安全扫描:保护容器化应用的安全 引言 在云原生环境中,安全扫描是保障应用安全的重要手段。通过安全扫描,我们可以发现容器镜像和代码中的安全漏洞。 今天就来分享一下云原生安全扫描的最佳实践。 安全扫描类型 镜像扫描 扫描容器镜像中…...

ArcGIS 10.2.2许可服务罢工了?别慌,试试这个替换Service.txt和ARCGIS.exe的终极方案

ArcGIS 10.2.2许可服务故障终极修复指南:深入解析文件替换方案 当ArcGIS 10.2.2的许可服务突然罢工,所有常规方法都失效时,那种挫败感只有GIS专业人员才能真正体会。你试过关闭防火墙、调整服务启动类型、甚至重启服务器,但那个令…...

SQL-lab通关教程

Less-1单引号型完整注入流程打开靶场第一关你会看到如下图所示界面,由为方便后续靶场的payload输入查看,我这里了将直接利用hackbar进行sql注入测试。第1步:确认闭合方式payload:http://127.0.0.1:8080/Less-1/?id1分析&#xff…...

保姆级教程:用HACS给追觅扫地机装Home Assistant插件,实现iPhone家庭App远程分区清扫

零门槛实现追觅扫地机HomeKit分区控制:HACS插件全流程指南 在智能家居生态中,苹果HomeKit以其出色的隐私保护和流畅的跨设备联动体验,成为许多iPhone用户的首选。但对于使用追觅X10/X20等型号扫地机的用户来说,官方App并未提供与…...

华硕笔记本性能优化神器:3步掌握G-Helper轻量级控制中心

华硕笔记本性能优化神器:3步掌握G-Helper轻量级控制中心 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, …...