c语言二叉树的创建,三种遍历方式,销毁

news2024/11/25 5:49:25

二叉树的创建

typedef char datatype;
typedef struct Node
{
  datatype data;
  struct Node *left_child;
  struct Node *right_child;

}*Btree;
//二叉树的创建
Btree create_node()
{
  Btree t=(Btree)malloc(sizeof(struct Node));
  if(NULL==t)
    return NULL;
  t->data=0;
  t->left_child=t->right_child=NULL;
  return t;
}
//c语言模拟二叉树的建立
Btree create_tree()
{
   datatype element;
   printf("INPUT:");
   scanf(" %c",&element);
   if(element=='#')
      return NULL;
   Btree tree=create_node();
   tree->data=element;
   puts("LEFT");
   tree->left_child=create_tree();
   puts("RIGHT");
   tree->right_child=create_tree();
   return tree;
}

前序遍历

//二叉树的先序遍历  根左右
void frist_output(Btree tree)
{
    if(NULL==tree)
	{
		return ;
	}
	printf("%c",tree->data);
    frist_output(tree->left_child);
	frist_output(tree->right_child);
}

中序遍历

//二叉树的中序遍历 左根右
void mid_output(Btree tree)
{
	if(NULL==tree)
	{
	  return ;
	}
	mid_output(tree->left_child);
	printf("%c",tree->data);
	mid_output(tree->right_child);  
}

后序遍历

//二叉树的后序遍历 左右根
void last_output(Btree tree)
{
    if(NULL==tree)
	{
	  return;
	}
	last_output(tree->left_child);
	last_output(tree->right_child);
	printf("%c",tree->data);
}

销毁二叉树

//二叉树的销毁
void free_tree(Btree tree)
{
 if(NULL==tree)
 {
   return;
 }
 free_tree(tree->left_child);
 free_tree(tree->right_child);
 free(tree);
 tree=NULL;

}

效果展示

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

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

相关文章

计算机网络_1.6.2 计算机网络体系结构分层的必要性

1.6.2 计算机网络体系结构分层的必要性 一、五层原理体系结构每层各自主要解决什么问题1、物理层2、数据链路层3、网络层4、运输层5、应用层 二、总结三、练习 笔记来源: B站 《深入浅出计算机网络》课程 本节主要介绍实现计算机网络需要解决哪些问题?以…

SpringBoot数据访问复习

SpringBoot数据访问复习 数据访问准备 引入jdbc所需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency> 原理分析 导入的启动器引入了两个…

Vue.js设计与实现(霍春阳)

Vue.js设计与实现 (霍春阳) 电子版获取链接&#xff1a;Vue.js设计与实现(霍春阳) 编辑推荐 适读人群 &#xff1a;1.对Vue.js 2/3具有上手经验&#xff0c;且希望进一步理解Vue.js框架设计原理的开发人员&#xff1b; 2.没有使用过Vue.js&#xff0c;但对Vue.js框架设计感兴趣…

CentOS下安装vlc

一、引言 vlc是一跨多媒体播放器&#xff0c;可以播放本地媒体文件和网络串流&#xff0c;帮助我们排查音视频开发过程中遇到的问题。大部分情况下&#xff0c;我们只需要在Windows系统下安装vlc就可以了。但有一种情况是需要在Linux下安装vlc的&#xff1a;我们的音视频拉流软…

Java 数据结构 二叉树(一)二叉查询树

目录 树的种类 二叉树 二叉查找树 满二叉树 ​编辑 完全二叉树 二叉树的数据存储 链式存储 数组存储 寻址方式&#xff1a; 二叉树的遍历&#xff08;了解即可&#xff09; ​编辑 二叉查询树缺点 前言-与正文无关 生活远不止眼前的苦劳与奔波&#xff0c;它还充满…

JVM之Java内存区域

JVM-Java内存区域 Java内存区域是Java虚拟机&#xff08;JVM&#xff09;管理的内存资源的逻辑划分&#xff0c;用于存储程序运行时所需的数据。Java内存区域的合理划分和管理对于程序的性能和稳定性具有重要影响。本文将深入探讨Java内存区域的各个部分&#xff0c;包括方法区…

C语言第十八弹---指针(二)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1、const修饰指针 1.1、const修饰变量 1.2、const修饰指针变量 2、指针运算 2.1、指针- 整数 2.2、指针-指针 2.3、指针的关系运算 3、野指针 3.1、…

由于误删了node依赖,导致这后面的一系列操作

文章目录 1. 事发原因&#xff1a;Delete select files2. Delete select files引起的cross-env报错3. cross-env是node_modules的依赖工具4. 那么Delete selected files到底是什么操作5. 重装node_modules依赖包&#xff0c;也报错6. 报错&#xff1a;cb() never called!7. 算了…

Transformer 自然语言处理(三)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第八章&#xff1a;使 transformers 在生产中更高效 在之前的章节中&#xff0c;您已经看到了 transformers 如何被微调以在各种任务上产生出色的结果。…

【Mysql】整理

Mysql整理与总结 整理Mysql的基本内容供回顾。 参考&#xff1a; [1]. 掘金.MySQL三大日志(binlog,redolog,undolog)详解 [2]. Javaguide.MySQL三大日志(binlog、redo log和undo log)详解

从一个小故事讲解观察者模式~

定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 什么是观察者模式&#xff1f; 观察者模式在我们的日常生活中极其常见。 先来看看观察者模式的定义&#xff1a; 观察者模式定义了对象之间…

MySQL进阶入门指南

文章目录 MySQL如何定位慢查询找到了这个执行慢的SQL语句&#xff0c;如何分析 MySQL的引擎InnoDBMyISAM 索引什么是索引&#xff1f;索引的优缺点索引底层数据结构索引的分类MySQL超大分页怎么处理 什么是最左匹配原则创建索引的原则索引失效的场景 事务什么是事务&#xff1f…

jsp网格环境变化系统Myeclipse开发mysql数据库web结构java编程计算机网页项目百度地图

一、源码特点 JSP 网格环境变化系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示词?没关系,ChatGPT帮你搞定

文章目录 ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示词&#xff1f;没关系&#xff0c;ChatGPT帮你搞定一、把场景描述转为镜头语言二、把镜头语言转换为Prompt三、把Prompt转换为图片 ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示…

利用jmeter完成简单的压力测试

Jmeter是一个非常好用的压力测试工具。Jmeter用来做轻量级的压力测试&#xff0c;非常合适&#xff0c;只需要十几分钟&#xff0c;就能把压力测试需要的脚本写好。 1、什么是压力测试 顾名思义&#xff1a;压力测试&#xff0c;就是 被测试的系统&#xff0c;在一定的访问压…

C++集群聊天服务器 数据模块+业务模块+CMake构建项目 笔记 (上)

跟着施磊老师做C项目&#xff0c;施磊老师_腾讯课堂 (qq.com) 本文在此篇博客的基础上继续实现数据模块和业务模块代码&#xff1a; C集群聊天服务器 网络模块业务模块CMake构建项目 笔记 &#xff08;上&#xff09;-CSDN博客https://blog.csdn.net/weixin_41987016/article…

Matplotlib箱形图的绘制与高级技巧解析【第57篇—python:Matplotlib箱形图】

文章目录 Matplotlib箱形图的绘制与高级技巧解析1. 水平箱形图2. 带缺口箱形图3. 群组箱形图4. 堆叠箱形图5. 核密度箱形图6. 小提琴箱形图7. 组合箱形图8. 多子图中的炫酷箱形图9. 动态箱形图与交互式可视化9.1 动态箱形图9.2 交互式小提琴箱形图 总结 Matplotlib箱形图的绘制…

爬虫(二)

1.同步获取短视频 1.只要播放地址对Json数据解析&#xff0c;先把列表找出&#xff1a; 2.只想要所有的播放地址&#xff0c;通过列表表达式循环遍历这个列表拿到每个对象&#xff0c;再从一个个对象里面找到Video,再从Video里面找到播放地址(play_addr),再从播放地址找到播放…

列式数据库、行式数据库简介

列式数据库、行式数据库简介 1、数据准备2、行式数据库3、列式数据库4、行式、列式存储对比 常见的行式数据库有Mysql&#xff0c;DB2&#xff0c;Oracle&#xff0c;Sql-server等&#xff1b;列数据库&#xff08;Column-Based&#xff09;数据存储方式按列存储&#xff0c;常…

026 打印三角形及debug

打印三角形 Scanner scanner new Scanner(System.in); System.out.print("请输入要打印的三角形的行数&#xff1a;"); int row scanner.nextInt(); // 这个循环控制三角形的行数 for (int i 1; i < row; i) {// 这个循环控制每行空格的个数for (int space r…