牛客 KY11.二叉树遍历

news2024/9/24 15:18:27

牛客 KY11.二叉树遍历

image-20240801114628025

思路:

  我们接收字符串以后,创建一个二叉树结构体,然后就可以开始建立树,如果是字符就malloc新的结点去存储,是**'#'就返回空**,最后用递归根左右的顺序创建结点。树建立完成后,再用中序遍历一次即可。

代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct BTNode
{
    struct BTNode* left;
    struct BTNode* right;
    char val;
}BTNode;

BTNode* BuyNode(char x) //malloc结点
{
    BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));
    if(newnode == NULL)
    {
        perror("malloc fail");
        return NULL;
    }
    newnode->val = x;
    newnode->left = NULL;
    newnode->right = NULL;
    return newnode;
}

BTNode* createTree(char* a, int* pi)
{
    if(a[*pi] == '#')
    {
        (*pi)++;
        return NULL;
    }
    BTNode* root = BuyNode(a[*pi]); //创建结点
    (*pi)++; //该字符存储,指针后移
    root->left = createTree(a,pi);
    root->right = createTree(a,pi);
    return root;
}

void Inorder(BTNode* root) //中序遍历
{
    if(root == NULL)
    {
        return;
    }
    Inorder(root->left);
    printf("%c ", root->val);
    Inorder(root->right);
}

int main()
{
    char a[100];
    int i = 0;
    scanf("%s",a);
    BTNode* root = createTree(a, &i); //i要传地址,不然递归返回以后i会重置
    Inorder(root);
    return 0;
}

image-20240801124753752

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

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

相关文章

Linux中防火墙实战之Web服务器和ssh远程服务配置指南

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

螺钉柱的设计

如果螺钉柱参数设置不合理&#xff0c;可能导致螺钉柱滑牙、爆裂、断裂、螺丝断裂、螺钉头磨损、螺钉攻入费力等问题 具体参数可以参照下表 螺丝柱设计尺寸&#xff1a; 螺丝柱设计要点&#xff1a; 频繁拆卸的注意事项&#xff1a; 自攻牙螺丝柱不宜频繁拆卸&#xff0c;因…

AI大模型应用(2)ChatGLM3本地部署及其在alpaca_zh数据集上的低精度微调

AI大模型应用(2)ChatGLM3部署及其在alpaca_zh数据集上的低精度微调 我们之前已经了解了HuggingFace中peft库的几种高效微调方法。 参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning 参数高效微调PEFT(二)快速入门P-Tuning、P-Tuning V2 参数高效微调PEFT…

C++第三十弹---C++继承机制深度剖析(中)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、派生类的默认成员函数 1.1、派生类的构造函数 1.2、派生类的拷贝构造函数 1.3、派生类的赋值重载 1.4、派生类的析构函数 2、继承与友元 …

TL3568编译Kernel内核 make tl3568-evm.img -j16报错 ‘arch/arm64/boot/Image.lz4‘ failed

在编译Kernel时&#xff0c;遇到报错内容&#xff1a; /bin/sh: lz4c: command not found arch/arm64/boot/Makefile:31: recipe for target arch/arm64/boot/Image.lz4 failed make[1]: *** [arch/arm64/boot/Image.lz4] Error 1 arch/arm64/Makefile:139: recipe for target …

科普文:【支持信创、宣传国产】Alibaba Dragonwell JVM性能提升50%

4月5日&#xff0c;阿里云开放了新一代ECS实例的邀测[1]&#xff0c;Alibaba Dragonwell也在新ECS上进行了极致的优化。相比于之前的dragonwell_11.0.8.3版本&#xff0c;即将发布的dragonwell_11.0.11.6在SPECjbb2015[2] composite模式测试中&#xff0c;系统吞吐量max-jOPS提…

【算法】插值查找(对二分查找的优化)

引言 在二分查找中&#xff0c;对于相对较大的数或较小的数来说&#xff0c;查询效率是很低的&#xff0c;我们希望程序可以自适应待查询的数&#xff0c;使用插值算法 插值查找原理 1.插值查找算法类似于二分查找&#xff0c;不同的是插值查找每次从自适应 mid 处开始查找 2…

Airtest封装的Tidevice接口有多好用(二)

一、前言 上节课我们分享了一批Airtest封装的Tidevice接口&#xff0c;是有关获取设备信息的&#xff0c;还没看到的同学可以戳这里复习一下。那么本周我们继续来看一下Airtest还封装了哪些Tidevice的接口吧~ 二、Airtest封装的Tidevice接口 2.1 list_app(udid ,app_typeuse…

早得农元早享“富”!农元又双叒叕涨了!

农元升值设定的唯一途径&#xff0c;仅随着用户在平台每次的购物而升值&#xff0c;未来农元的价值升值甚至会达到几千、上万元人民币&#xff0c;真正实现了购物乐趣与财富增长的双重盛宴&#xff0c;让每一位平台用户都能享受到数字经济时代带来的红利。 快从消费者变为经营者…

警惕!六西格玛培训中不可不知的六大陷阱

近年来&#xff0c;随着六西格玛的普及&#xff0c;一些常见的培训陷阱也逐渐浮出水面&#xff0c;让不少求学者误入歧途。本文&#xff0c;深圳天行健企业管理咨询公司旨在为大家揭示六西格玛培训中的六大常见陷阱&#xff0c;真正掌握六西格玛的精髓。 陷阱一&#xff1a;速成…

KMP入门与算法题实践

基础知识 参考视频 下面是两个b站上个人借鉴学习的视频 第一个视频用来快速理解KMP&#xff1a; 【最浅显易懂的 KMP 算法讲解】 https://www.bilibili.com/video/BV1AY4y157yL/?share_sourcecopy_web&vd_sourced124eda224bf54d0e3ab795c0b89dbb0 第二、三个视频用来理…

vue3学习day01-vue3的优势、新的脚手架工具create-vue、创建vue3项目、vue3的项目文件内容、插件变化

1、vue3的优势 &#xff08;1&#xff09;更易维护&#xff1a;组合式api&#xff0c;更好的TypeScript支持 &#xff08;2&#xff09;更快的速度&#xff1a;重写diff算法&#xff0c;模版编译优化&#xff0c;更高效的组件化 &#xff08;3&#xff09;更小的体积&#x…

MES系统:生产实时监控与智能反馈,驱动制造业智能化升级

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;通过集成多种技术手段和管理模块&#xff0c;实现了生产过程的实时监控与反馈。以下是实时监控与反馈具体实现的详细分析&#xff1a; 一、实时监控 1. 数据采集 传感器与设备集成&am…

nrm: npm 镜像源管理工具

nrm 是 “npm registry manager” 的缩写&#xff0c;是一个 npm 镜像源管理工具&#xff0c;用于在不同的 npm 镜像源之间快速切换&#xff0c;帮助开发者根据需要选择不同的源来加速包的下载或解决网络问题。 常用命令 详细介绍 以下是 nrm 的一些主要特性和用法&#xff1…

精美UI三方用户中心 新版QRuser用户中心主题 | 魔方财务模板

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 新版QRuser用户中心主题 | 魔方财务模板 本主题支持魔方财务3.5.7版本&#xff01;可自由切换魔方财务3.5.7版本与其他版本。 本主题基于官方default开发&#xff0c;主要面向企业&…

Java语言程序设计——篇十一(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是CSDN&#xff0c;我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f33…

【数据结构-前缀哈希同余运算】力扣974. 和可被 K 整除的子数组

给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的非空 子数组 的数目。 子数组 是数组中 连续 的部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k 5 输出&#xff1a;7 解释&#xff1a; 有 7 个子数组满足其元素之和可…

仿真入门!Hypermesh焊接处理方法

某抗硫球阀为对焊端结构&#xff0c;需要焊接袖管。焊接过程产生的高温会造成热影响区域&#xff0c;尤其接头区域产生变形及残余应力&#xff0c;同时O型密封圈处的温度也是焊接生产比较关心的问题。因此&#xff0c;为弄清袖管焊接过程中温度场规律&#xff0c;给实际焊接生产…

RAID 级别:0、1、5、6、10 和 50 傻傻分不清?那是你没看过这篇

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 早上好&#xff0c;我的网工朋友。 大家都知道&#xff0c;无论是企业级服务器还是个人计算机&#xff0c;数据的安全性和可用性都是至关重要的。…

通配符HTTPS证书快速申请流程

通配符HTTPS证书是一种特别类型的HTTPS证书&#xff0c;它可以为一个主域名及其下级所有子域名提供安全加密。这对于拥有多个子域名的企业来说非常有用&#xff0c;因为它简化了管理流程&#xff0c;并降低了成本。具体申请流程&#xff1a; 注册账号填写230919注册码即可获得…