C语言实现三叉树

#include <stdio.h>
#include <stdlib.h>
 
// 定义三叉树节点结构体
typedef struct TripletNode {
    int data;
    struct TripletNode *left;
    struct TripletNode *middle;
    struct TripletNode *right;
} TripletNode;
 
// 创建新的三叉树节点
TripletNode* createNode(int data) {
    TripletNode* newNode = (TripletNode*)malloc(sizeof(TripletNode));
    if (newNode == NULL) {
        printf("Memory allocation failed\n");
        exit(0);
    }
    newNode->data = data;
    newNode->left = NULL;
    newNode->middle = NULL;
    newNode->right = NULL;
 
    return newNode;
}
 
// 插入节点到三叉树
void insertNode(TripletNode** root, int data) {
    if (*root == NULL) {
        *root = createNode(data);
        return;
    }
 
    TripletNode* current = *root;
    TripletNode* parent = NULL;
 
    while (current != NULL) {
        parent = current;
        if (data < current->data) {
            current = current->left;
        } else if (data > current->data) {
            current = current->right;
        } else {
            // 节点已存在,不需要插入
            return;
        }
    }
 
    current = createNode(data);
    if (data < parent->data) {
        parent->left = current;
    } else {
        parent->right = current;
    }
}
 
// 中序遍历三叉树
void inorderTraversal(TripletNode* root) {
    if (root == NULL) {
        return;
    }
 
    inorderTraversal(root->left);
    printf("%d ", root->data);
    inorderTraversal(root->right);
}
 
int main() {
    TripletNode* root = NULL;
 
    // 插入节点
    insertNode(&root, 10);
    insertNode(&root, 15);
    insertNode(&root, 5);
    insertNode(&root, 7);
    insertNode(&root, 12);
    insertNode(&root, 14);
    insertNode(&root, 20);
    insertNode(&root, 17);
    insertNode(&root, 18);
    insertNode(&root, 25);
 
    // 中序遍历三叉树
    printf("Inorder traversal of the created tree:\n");
    inorderTraversal(root);
 
    return 0;
}

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

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

相关文章

PSCA复位控制集成之复位信号

组件可能支持两种基本的复位类型。 • 冷复位&#xff1a;重置组件中的所有逻辑。用作上电复位。 • 热复位&#xff1a;重置组件中的大部分逻辑。通常&#xff0c;复位的范围是所有功能逻辑。不包括在热复位中的逻辑会随组件类型而变化&#xff0c;但通常会排除诸如调试和 R…

富格林:正确辨析虚假黑幕平台

富格林悉知&#xff0c;现货黄金自面世以来一直都是投资者关注的焦点。黄金市场的波动性较大&#xff0c;因此在进行交易前&#xff0c;选择一款正规的平台是保障交易的关键。事实上&#xff0c;目前市面上混杂着不少虚假黑幕平台&#xff0c;对于新手投资者来说如何正确辨析虚…

SAP前台处理:物料主数据创建<MM01>之基础视图

一、背景&#xff1a; 终于来到了物料主数据&#xff0c;我觉得物料账是SAP最重要的一项发明&#xff0c;也一直是SAP的一项重要优势&#xff0c;物料账记录了一个个物料的生生不息&#xff1b; 本章主要讲解物料主数据和财务相关的主要内容&#xff1a;这里特别提示由于作者…

MySql安装与卸载—我耀学IT

1.MySql安装 打开下载的mysql安装文件mysql-5.5.27-win32.zip&#xff0c;双击解压缩&#xff0c;运行“setup.exe”。 选择安装类型&#xff0c;有“Typical&#xff08;默认&#xff09;”、“Complete&#xff08;完全&#xff09;”、“Custom&#xff08;用户自定义&…

日志 | 日志级别 | c/c++ | 终端显示不同的颜色

日志想必都知道 优先级从高到低依次为&#xff1a;OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL日志参考1 #define RED "\x1B[31m" #define GRN "\x1B[32m" #define YEL "\x1B[33m" #define BLU "\x1B[34m" #define MAG "…

鸿蒙4.0ArkUI快速入门(一)应用模型

ArkUI篇 应用模型Stage模型FA模型模型对比 应用模型 应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼&#xff0c;它提供了应用程序必备的组件和运行机制。 HarmonyOS先后提供了两种应用模型&#xff1a; FA&#xff08;Feature Ability&#xff09;模型&…

VSCode下使用github初步

由于各种需要&#xff0c;现在需要统一将一些代码提交搞github&#xff0c;于是有了在VSCode下使用github的需求。之前只是简单的使用git clone&#xff0c;代码提交这些用的是其他源代码工具&#xff0c;于是得学习实操下&#xff0c;并做一记录以备后用。 安装 VSCode安装 …

Guava之EventBus源码分析

简介 事件总线。 有助于深入理解代码的功能和实现细节。 可以了解代码背后的逻辑、算法、数据结构和设计模式等方面&#xff0c;从而更好地理解代码的作用和功能。 可以学习到业界的最佳实践和设计模式。 这有助于提高自己的编程水平&#xff0c;使你能够编写更高质量、可…

HCIP的学习(2)

TCP----传输控制协议 是一种面向连接的可靠传输协议。 注&#xff1a;与我之前博客HCIA的学习&#xff08;2&#xff09;结合一起看 面向连接&#xff1a;数据传输前收发双方建立一条逻辑通路 特点&#xff1a; TCP是一种面向连接的传输协议每一条TCP连接有且只能存在两个端…

杂记8---多线激光雷达与相机外参标定

背景&#xff1a;本人开源的标定程序&#xff0c;提供大家参考学习 基于棋盘格的多线激光雷达和鱼眼/针孔模型相机外参标定的程序 前言 标定数据&#xff0c;只需要一个棋盘格标定板。把标定板放置lidar 与camera 共视区域&#xff0c;拜拍几个pose进行采集。 基于简谐原则…

MeterSphere和Jmeter使用总结

一、MeterSphere 介绍 MeterSphere 是⼀站式开源持续测试平台&#xff0c;涵盖测试跟踪、接⼝测试、UI 测试和性能测试等&#xff0c;全 ⾯兼容 JMeter、Selenium 等主流开源标准&#xff0c;能够有效助⼒开发和测试团队在线共享协作&#xff0c;实现端到 端的测试管理跟踪…

如何在本地ubuntu系统打开服务器的paraview(免下载数据到本地)

问题&#xff1a;在服务器上运行的openFoam数据&#xff0c;但是没有图形界面&#xff0c;本来是一直将数据下载下来但是太麻烦了&#xff0c;并且数据量大的时候本地笔记本更卡的无法加载&#xff0c;这时候可以在服务器上使用paraview命令&#xff0c;这样会打开本地的paravi…

电机与直线模组选型

一。普通电机选型 普通电机选型&#xff08;一&#xff09; 三相异步电机 定子&#xff1a;产生旋转磁场 转子&#xff1a;切割磁场&#xff0c;产生洛伦兹力 结构简单&#xff0c;成本低&#xff0c;稳定 效率较低&#xff0c;转速不稳定 N60f/P 定子旋转速度&#xff1a;150…

如何在个人Windows电脑搭建Cloudreve云盘并实现无公网IP远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

【深度学习】手动实现全连接神经网络(FCNN)

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; 神经网络的本质就是通过参数、线性函数与激活函数来拟合特征与目标之间的真实函数关系。 01 神经网络简介 1.1 引入 神经网络是一门重要的机器学习技术&…

uni.getlocation h5获取定位失败后,阻塞问题

uni.getlocation 在H5中&#xff0c;如果用户未开gps定位或者gps定位信号较差时&#xff0c;定位会失败。这种情况uni.getlocation也不会出现报错&#xff0c;也不会有后续执行&#xff0c;导致代码阻塞&#xff0c;体验极差。 解决方案1&#xff1a;拿不到定位或者定位失败这个…

光度立体法的简化求解(已知特殊光源方向)

原理这个博主写的很好 如何获取物体表面的法向量&#xff1f;好好谈谈光度立体法-CSDN博客 Photometric Stereo 光度立体三维重建&#xff08;一&#xff09;——介绍-CSDN博客 ​ 不过当图片较大的时候,比如4048*4000这种量级的,矩阵很大,速度要10秒,加了openmp也需要2s; …

项目中遇到的sql问题记录

有一张表&#xff0c;表结构及数据如下&#xff1a; INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) VALUES (approve001, 2021-02-18 00:00:00, tableA, 2024-03-18); INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) …

卸载.Net SDK

文章目录 SDK版本对照卸载历史版本清理Nuget缓存参考资料 在.Net学习环境或项目开发环境中&#xff0c;往往会安装多个版本的SDK,如何卸载历史SDK呢&#xff1f; SDK版本对照 # 检查SDK $ dotnet sdk check .NET SDK: 版本 状态 ---------------…

深度学习03价值学习

Q*类似于先知&#xff0c;知道动作的后果 价值学习是得到一个近似的价值函数