11 C语言先序方式创建二叉树

news2024/11/15 9:21:22

这个代码是使用占位符的方式创建二叉树

#include "stdio.h"
#include "stdlib.h"

typedef struct node {
    char data;
    struct node *lchild;
    struct node *rchild;
} Node;

Node *create_node(char value) {
    Node *node = (Node *) malloc(sizeof(Node));
    if (node == NULL) {
        exit(-1);
    }

    node->data = value;
    node->lchild = NULL;
    node->rchild = NULL;
    return node;
}

//递归创建二叉树
Node *create_tree(char *preOrder, int *index) {
    char current = preOrder[*index];
    if (current == '#' || current == '\0') {
        *index = *index + 1;
        return NULL;
    }

    //创建当前节点
    Node *root = create_node(current);
    *index = *index + 1;
    root->lchild = create_tree(preOrder, index);
    root->rchild = create_tree(preOrder, index);
    return root;
}

void preOrderPrint(Node *node) {
    if (node == NULL) {
        return;
    }

    printf("%c ", node->data);
    preOrderPrint(node->lchild);
    preOrderPrint(node->rchild);
}

int main() {
    char preOrder[] = "AEB#C###D##";
    int index = 0;
    Node *root = create_tree(preOrder, &index);
    preOrderPrint(root);
    return 0;
}

运行效果

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

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

相关文章

weblogic漏洞——CVE-2020-14882

一、基本信息 靶机:IP:192.168.100.40 二、攻击过程 进入 vulhub 靶场相关目录,并启动环境 cd master/weblogic/CVE-2020-14882 docker-compose up -d 绕过登录验证 http://192.168.100.40:7001/console/css/%252e%252e%252fconsole.por…

软件测试学习笔记丨Linux-Bash编程语法

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32091 一、Bash编程基础 1.1 变量 1.1.1 语法 Variable_namevalue 1.1.2 变量定义的规则 变量名区分大小写,a和A为两个不同的变量;变量名可以使用大小写字母混编的…

陷抄袭风波 《黑神话:悟空》该如何应对

都说人红是非多,国产首部3A游戏《黑神话:悟空》在爆火的同时,一些问题也随之出现。一方面《黑神话:悟空》陷入抄袭风波?另一方面该游戏也被很多黑灰产盯上了。 8月23日,“塞上李云中”发布微博,…

【WRF安装编译问题解决】Linux中gcc和gfortran降级方法

Linux中gcc和gfortran降级方法 准备:gcc和gfortran版本查找1 查看gcc和gfortran安装版本2 gcc版本降级2.1 gcc版本降级至9.5.0-通过下载源码编译安装2.2 gcc版本降级至9.1.0-通过下载源码编译安装 3 gfortran版本降级参考 在安装编译WRF环境时,无法成功编…

【Python报错已解决】`WebDriverException: Message: invalid session id`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述:1.1 报错示例:1.2 报错分析:1.3 解决思路&#xff…

Kubernetes精讲之环境搭建

目录 一 Kubernetes 简介及部署方法 1.1 应用部署方式演变 1.2 容器编排应用 1.3 kubernetes 简介 1.4 K8S的设计架构 1.4.1 K8S各个组件用途 1.4.2 K8S 各组件之间的调用关系 1.4.3 K8S 的 常用名词感念 1.4.4 k8s的分层架构 二 K8S集群环境搭建 2.1 k8s中容器的管…

每日一题,力扣leetcode Hot100之118.杨辉三角

解题思路就是动态规划,确定好边界值和要动态传递的值 边界值就是每一排的第一个和最后一个肯定是1 动态传递值就是除了边界值每一个都等于他的左上加右上 class Solution:def generate(self, numRows: int) -> List[List[int]]:ret list()for i in range(num…

ES之三:springboot集成ES

一.选择版本很重要,不然会找不到好多方法 明明有Timeout方法,不报红,运行时,报错,找不到该类 ClassNotFoundException 为了避免使用的Elasticsearch版本和SpringBoot采用的版本不一致导致的问题,尽量使用…

web群集--nginx常见的几种负载均衡调度算法的配置过程和效果展示

文章目录 前言环境前置配置httpd主机tomcat主机 负载均衡调度算法1.轮询配置过程效果展示 2.加权轮询配置过程效果展示 3. IP哈希(IP Hash)配置过程效果展示 4. 最少连接(Least Connections)配置过程效果展示 5.加权最小连接这个在…

实时备份工具

实时同步工具 1. 常用实时同步工具1.1 sersync1.2 inotify-tools1.3 ‌lsync‌ 2. 工具对比2.1 常用实时同步工具对比2.2 ‌sersync和lsyncd对比 3. 实践3.1 sersync1. 简易架构2. 服务器3. 搭建简易web服务器4. 配置NFS服务器5. 配置备份服务器6. 实时同步部分7. 验证 1. 常用…

穿越机的应用行业!!!

1. 军事领域 侦察与目标搜索:穿越机能够快速穿越危险区域,执行侦察任务,实时获取战场信息,对敌方目标进行精确搜索和定位。其灵活性和机动性使其成为战场上的重要侦察工具。 目标摧毁:经过改装的穿越机可挂载火箭弹或…

重磅活动!南开大学赵宏教授倾情分享AI挑战下的教育教学新理念与新方法

人工智能是科技发展的前沿领域,也是推动新质生产力形成的关键动力。当前,各个高校正积极探索人工智能对高等教育的改革,以培养适应未来社会发展需求的新型人才。 本次活动旨在传播 AI 挑战下的教育教学新理念与新方法,推动人才培养…

常见echart图表 返回数据与Java实体类

返回数据示例详见 Examples - Apache ECharts 一、折线图 实体类 public class LineChart {String name;List<BaseSeries> series;List<String> xAxis; }public class BaseSeries {String name;Double[] data; } 二、柱状图 实体类 public class Chart {String…

深度解析Linux系统的基本概念及优缺点和原理

目录 基本概念 操作系统简介 架构组成 多任务处理 安全性与开放性 发行版本 使用场景 学习资源 优点 缺点 1. 软件兼容性问题 2. 图形界面应用程序较少 3. 安装和配置复杂 4. 学习曲线陡峭 5. 缺乏技术支持 6. 硬件兼容性问题 7. 安全风险 8. 性能问题 9. 游…

数据结构代码集训day16(适合考研、自学、期末和专升本)

本题来自B站up&#xff1a;白话拆解数据结构 今日题目就一个&#xff1a;约瑟夫环问题。 一个圈共有N个人&#xff08;N为不确定的数字&#xff09;&#xff0c;第一个人的编号为0或者1&#xff08;两个都可以&#xff0c;看你的程序如何编写&#xff09;&#xff0c;假设这边我…

提升App推广效果,从精准获取下载数据开始

在App推广的过程中&#xff0c;获取准确的下载数据一直是一个令人头疼的问题。你知道吗&#xff1f;无法精确追踪用户来源和下载量&#xff0c;就像是在黑暗中摸索&#xff0c;让推广效果大打折扣。今天&#xff0c;我们就来揭秘如何轻松获取App下载数据&#xff0c;优化你的推…

解题--有关动态内存开辟 几道经典的笔试题

文章目录 前言 一、题目一 二、题目二 三、题目三 四、题目四 总结 前言 路漫漫其修远兮&#xff0c;吾将上下而求索。 一、题目一 运行Test 函数会出现什么样的结果&#xff1f; 在Test函数之中&#xff0c;首先创建了一个指针变量 str , 并将其赋值为NULL&#xff1b; …

查看HBA卡是否支持FC协议

cat /sys/class/fc_host/host*/port_name lspci | grep -i fibre # 看有无fibre channel控制器 官网查询 Emulex Lpe32000 https://docs.broadcom.com/doc/12357773 https://cn.genuinemodules.com/image/catalog/pdf/18/LPe32000.pdf

Python【2】问题

目录 模块与包是什么&#xff1f; 赋值、浅拷贝和深拷贝的区别&#xff1f; Python中如何生成随机数&#xff1f; Python中的os模块常用方法&#xff1f;□ os.path和sys.path分别表示什么意思&#xff1f;□ 赋值 read、readline和readlines的区别&#xff1f; 介绍一…

vTESTstudio系列13--vTESTstudio中的动态函数库介绍3

在上一篇文章中&#xff08;vTESTstudio系列12--vTESTstudio中的动态函数库介绍2&#xff09;&#xff0c;给大家介绍了如何通过osek_tp.dll的接口去发送诊断指令&#xff0c;本篇文章给大家介绍如何去处理诊断回复内容&#xff0c;确保实际的诊断回复是符合需求。Lets Go!!! …