988. 从叶结点开始的最小字符串

news2024/12/25 17:12:42

988. 从叶结点开始的最小字符串

在这里插入图片描述


C代码:DFS

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
 // 叶子节点
 // 每一层用一个pathTop、遇到叶子节点就判断一次;建立一个ans字符串,每次叶子节点与之比较
 // 建一个全局的数组,最后再reverse

#define MAX_LEN 8501

char* tmp;    // reverse接收用, 末尾加'\0'
char* path;   // 全局路径, 用pathTop维系
char* ans;    // strcat自动加'\0'

char* reverse(int pathTop) {
    for (int i = 0; i < pathTop; ++i) {
        tmp[i] = path[pathTop - i -1];
    }
    tmp[pathTop] = '\0';
    return tmp;
}

void dfs(struct TreeNode* root, int pathTop) {
    if (root == NULL) {
        return;
    }
    path[pathTop++] = root->val + 'a';  // 先序遍历
    if (root->left == NULL && root->right == NULL) {
        char* tmp = reverse(pathTop);
        if (strlen(ans) == 0 || strcmp(ans, tmp) > 0) {  // ans 大于 tmp 返回 >0
            ans[0] = '\0';
            strcat(ans, tmp);
        }
    }
    dfs(root->left, pathTop);
    dfs(root->right, pathTop);
}

char * smallestFromLeaf(struct TreeNode* root){
    path = (char*)malloc(sizeof(char) * MAX_LEN);
    tmp = (char*)malloc(sizeof(char) * MAX_LEN);
    ans = (char*)malloc(sizeof(char) * MAX_LEN);   
    ans[0] = '\0';
    dfs(root, 0);
    return ans;
}

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

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

相关文章

Homebrew下载安装及使用教程

Homebrew是什么&#xff1f; 简单来说&#xff0c;就是用命令行的形式去管理mac系统的包或软件。 安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"国内请使用镜像源进行下载 执行上述命令后会要求输入…

大语言模型之七- Llama-2单GPU微调SFT

&#xff08;T4 16G&#xff09;模型预训练colab脚本在github主页面。详见Finetuning_LLama_2_0_on_Colab_with_1_GPU.ipynb 在上一篇博客提到两种改进预训练模型性能的方法Retrieval-Augmented Generation (RAG) 或者 finetuning。本篇博客过一下模型微调。 微调&#xff1a…

长清湖图书阅览室《乡村振兴战略下传统村落文化旅游设计》许少辉著

长清湖图书阅览室《乡村振兴战略下传统村落文化旅游设计》许少辉著

Pygame中Trivia游戏解析6-3

3.3 Trivia类的show_question()函数 Trivia类的show_question()函数的作用是显示题目。主要包括显示题目框架、显示题目内容和显示题目选项等三部分。 3.3.1 显示题目的框架 在show_question()函数中&#xff0c;通过以下代码显示题目的框架。 print_text(font1, 210, 5, &q…

前端Vue自定义得分构成水平柱形图组件 可用于系统专业门类得分评估分析

引入Vue自定义得分构成水平柱形图组件&#xff1a;cc-horBarChart 随着技术的发展&#xff0c;传统的开发方式使得系统的复杂度越来越高&#xff0c;一个小小的改动或小功能的增加可能会导致整体逻辑的修改&#xff0c;造成牵一发而动全身的情况。为了解决这个问题&#xff0c…

Liunx系统编程:信号量

一. 信号量概述 1.1 信号量的概念 在多线程场景下&#xff0c;我们经常会提到临界区和临界资源的概念&#xff0c;如果临界区资源同时有多个执行流进入&#xff0c;那么在多线程下就容易引发线程安全问题。 为了保证线程安全&#xff0c;互斥被引入&#xff0c;互斥可以保证…

Nat. Commun.2023 | AI-Bind+:提高蛋白质配体结合预测的通用性

论文标题&#xff1a;Improving the generalizability of protein-ligand binding predictions with AI-Bind 论文地址&#xff1a;Improving the generalizability of protein-ligand binding predictions with AI-Bind | Nature Communications 代码&#xff1a; Barabasi…

Linux 基础篇

很长时间&#xff0c;因为一些事情&#xff0c;没有更新我的文章这让我很惭愧&#xff0c;于是我将打算在今天更新下自己的文章&#xff0c;我发现一些事情&#xff0c;计算机并不是很难学到可以工作的水平&#xff0c;关键在于是否可以坚持下来&#xff0c;有很多时候我并不是…

TypeScript学习 + 贪吃蛇项目

TypeSCript简介 TypeScript是JavaScript的超集。它对JS进行了扩展&#xff0c;向JS中引入了类型的概念&#xff0c;并添加了许多新的特性。TS代码需要通过编译器编译为JS&#xff0c;然后再交由JS解析器执行。TS完全兼容JS&#xff0c;换言之&#xff0c;任何的JS代码都可以直…

文心一言 VS 讯飞星火 VS chatgpt (85)-- 算法导论8.2 2题

二、用go语言&#xff0c;试证明 COUNTING-SORT 是稳定的。 文心一言&#xff1a; 要证明 COUNTING-SORT 是稳定的&#xff0c;我们需要证明在排序过程中&#xff0c;具有相同值的元素在排序后仍保持其原始的相对顺序。COUNTING-SORT 是一种基于计数的排序算法&#xff0c;其…

生成式人工智能可以比你想象的更快地改变医疗保健行业

作者&#xff1a;Andres Herrera 医疗保健组织可以利用其私有数据、生成式人工智能和 Elasticsearch 实现这六项进步。 生成式人工智能是一股突破性的力量&#xff0c;正在席卷医疗保健行业&#xff0c;有望以人们从未见过的方式带来变革性的进步和个性化的患者护理。 从在症状…

算法通关村——滑动窗口高频问题

1. 无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 1.1 滑动窗口 找到最长字串需要找到字串的首尾位置…

项目(二):智慧教室

一。emWin环境的搭建 1.codeBlock下载 开源免费。 2.使用stm的Cubemx提供的作图软件 &#xff08;1&#xff09;在C盘下找到第三方的固件库&#xff0c;旁边有个ST文件夹 注意&#xff1a;我在下载cubemx为默认的路径 &#xff08;2&#xff09;STemWin中的Soft提供了绘图…

推荐系统(概要+召回)

推荐系统 一、概要 1.基本概念 用户行为&#xff1a;点击、点赞、收藏、转发消费指标&#xff1a;点击率 (click rate)、交互率 (engagement rate)北极星指标&#xff1a;用户规模、消费、发布实验流程&#xff1a;离线实验、AB测试、推全 2.推荐系统的链路 召回&#xff…

使用DOSBOX运行TurboC2,TC2使用graphics库绘图

Turbo C是由美国Borland公司开发的一套C语言程序开发工具&#xff0c;Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套Turbo系列软件&#xff0c;如Turbo BASIC、Turbo Pascal、Turbo Prolog&#xff0c;这些软件很受用户欢迎 [1] 。 Turbo C集成了程序…

【rust/egui】(七)看看template的app.rs:Slider

说在前面 rust新手&#xff0c;egui没啥找到啥教程&#xff0c;这里自己记录下学习过程环境&#xff1a;windows11 22H2rust版本&#xff1a;rustc 1.71.1egui版本&#xff1a;0.22.0eframe版本&#xff1a;0.22.0上一篇&#xff1a;这里 Slider 滑块&#xff0c;如下图 定义…

【01背包理论】01背包问题dp[i][j] <动态规划>

【01背包理论】01背包问题 dp[i][j] 有 n 件物品和一个最多能背重量为 w 的背包。 第 i 件物品的重量是 weight[i]&#xff0c;得到的价值是 value[i] 。 每件物品只有一个&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 题解 动态规划 确定 dp 数组以及下标的含义…

分布式配置中心 Apollo

文章目录 类似Lion一、Apollo客户端实现原理二、配置更新实现三、架构四大板块 &#xff1a;三个辅助服务发现模块Why Eureka 类似Lion 一、Apollo客户端实现原理 1、客户端和服务端会保持一个长连接&#xff0c;从而第一时间获取配置更新的推送。 2、客户端还会定时从Apollo配…

#FTHR-G0001开发板开箱测评#

最近看到芯查查有这个活动&#xff0c;就申请了这个开发板体验一下&#xff0c;没想到一申请就成功了&#xff0c;哈哈&#xff0c;人人都是天选之子了属于是&#xff0c;下面记录一下使用过程。 1、首先是外观部分 外观板子比较小巧的样子&#xff0c;下面放图&#xff0c;基…

BW常见操作及问题处理(适合小白)

1、如何跑BW处理链 &#xff1f;TCODE&#xff1a; RSA1 选中要运行的处理链。点击运行就可以。 2、如何改变处理链的运行时间节点与频率。&#xff08;这是SAP运行后台job的知识点&#xff09; 选中释放那个条目在选择 菜单 -> 作业-> 修改 点击开始条件 然后就可以修改…