寒假作业2024.2.7

news2024/11/12 18:05:55

1请编程实现二又树的操作
1.1二又树的创建
1.2二又树的先序遍历
1.3二又树的中序遍历
1.4二又树的后序遍历
1.5二又树各个节点度的个数
1.6二叉树的深度

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
typedef char datatype;

typedef struct Node
{
	datatype data;//数据域
	struct Node *l;//左孩子
	struct Node *r;//右孩子
}*Btree;
//创建节点
Btree create()
{
	Btree s=(Btree)malloc(sizeof(struct Node));
	if(s==NULL)
	return NULL;
	s->data='\0';
	s->l=NULL;
	s->r=NULL;
	return s;
}
//创建树和插入数据
Btree create_tree()
{
	datatype element;
	printf("please enter element:");
	scanf(" %c",&element);
	if(element=='#')
	{
		return NULL;
	}
	//创建根结点
	Btree tree=create();
	tree->data=element;
	//创建左孩子
	puts("左");
	tree->l=create_tree();
	//创建右孩子
	puts("右");
	tree->r=create_tree();
	//返回主函数
	return tree;
}
//先序遍历输出
void firstoutput(Btree tree)
{
	if(tree==NULL)
		return;
	//输出根
	printf("%c",tree->data);
	//遍历输出左孩子
	firstoutput(tree->l);
	//遍历输出右孩子
	firstoutput(tree->r);
}
//中序遍历输出
void midoutput(Btree tree)
{
	if(tree==NULL)
		return;
	//遍历输出左孩子
	firstoutput(tree->l);
	//输出根
	printf("%c",tree->data);
	//遍历输出右孩子
	firstoutput(tree->r);
}
//后序遍历输出
void lastoutput(Btree tree)
{
	if(tree==NULL)
		return ;
	//遍历输出左孩子
	firstoutput(tree->l);
	//遍历输出右孩子
	firstoutput(tree->r);
	//输出根
	printf("%c",tree->data);
}
//二叉树的各个度的节点个数
void count(Btree tree,int *n0,int *n1,int *n2)
{
	if(tree==NULL)
	return ;
	
	if(!tree->l && !tree->r)
		++*n0;
	else if(tree->l && tree->r)
		++*n2;
	else
		++*n1;
	//遍历左孩子
	count(tree->l,n0,n1,n2);
	//遍历右孩子
	count(tree->r,n0,n1,n2);
}
//计算树深度
int high(Btree tree)
{
	if(tree==NULL)
		return 0;
	//计算左深度
	int left=1+high(tree->l);
	//计算右深度
	int right=1+high(tree->r);
	if(left>right)
		return left;
	else
		return right;
}

int main(int argc, const char *argv[])
{
	//创建二叉树
	Btree tree=create_tree();
	//先序遍历
	printf("先序遍历\n");
	firstoutput(tree);
	puts("");
	//中序遍历输出
	printf("中序遍历\n");
	midoutput(tree);
	puts("");
	//后序遍历输出
	printf("后序遍历\n");
	lastoutput(tree);
	puts("");
	//二插树各个度的结点个数
	int n0=0,n1=0,n2=0;
	count(tree,&n0,&n1,&n2);
	printf("n0=%d n1=%d n2=%d sum=%d\n",n0,n1,n2,n0+n1+n2);
	//计算树的深度
	int len=high(tree);
	printf("二叉树深度为%d\n",len);
	return 0;
}

现象展示: 

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

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

相关文章

【JS逆向六】(上)逆向模拟生成某网站的【sig】和【payload】的值 仅供学习

逆向日期&#xff1a;2024.02.07 使用工具&#xff1a;Node.js 加密方法&#xff1a;未知 / md5标准库 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 可使用AES进行解密处理&#xff08; 直接解密即可&#xff09;&#xff1a;在线AES加解…

[HCIE]防火墙基础配置

实验目的&#xff1a;1.允许主机 ping FW的物理接口&#xff1b; 2.允许FW访问trust区域的主机&#xff1b; 3.允许trust主机访问其他所有区域。 配置步骤&#xff1a; 1.配置所有接口地址&#xff08;略&#xff09; 2.将防火墙接口加入到各自的区域 firewall zone trust …

企业数字化转型面临什么挑战?

随着科技的飞速发展&#xff0c;企业数字化转型已成为当今商业世界的一大趋势。然而&#xff0c;在这场变革中&#xff0c;企业可能会面临诸多挑战。本文将结合实际案例&#xff0c;探讨企业在数字化转型过程中可能遇到的一些问题&#xff0c;并提供相应的解决建议。 1.技术挑…

C# CAD交互界面-自定义窗体(三)

运行环境 vs2022 c# cad2016 调试成功 一、引用 二、开发代码进行详细的说明 初始化与获取AutoCAD核心对象&#xff1a; Database db HostApplicationServices.WorkingDatabase;&#xff1a;这行代码获取当前工作中的AutoCAD数据库对象。在AutoCAD中&#xff0c;所有图形数…

研发误删的库,凭什么要 DBA 承担责任

镇楼图 三个角色 删库以及更宽泛的数据库变更场景中有三个角色&#xff0c;业务研发&#xff0c;DBA 以及使用的数据库变更工具&#xff1a; 业务研发通常指的是后端研发。国内最主流的技术栈还是 Java&#xff0c;此外 Go 也有一部分&#xff0c;另有全栈的则使用 Node。这些…

如何开始深度学习,从实践开始

将“如何开始深度学习”这个问题喂给ChatGPT和文心一言&#xff0c;会给出很有专业水准的答案&#xff0c;比如&#xff1a; 要开始深度学习&#xff0c;你可以遵循以下步骤&#xff1a; 学习Python编程语言的基础知识&#xff0c;因为它在深度学习框架中经常被使用。 熟悉线性…

如何在GitHub上创建自己的个人网站【github.io】

如何在GitHub上创建自己的个人网站【github.io】 1.创建一个自己的GitHub账号2.点击New按钮3.填写个人仓库相关的信息并创建4.安装git&#xff0c;下载你需要的版本。5.上传新的文件6.访问网站7.后话 1.创建一个自己的GitHub账号 GitHub网站 最后会出现像下面一样的界面 2.点…

spring boot学习第十一篇:发邮件

1、pom.xml文件内容如下&#xff08;是我所有学习内容需要的&#xff0c;不再单独分出来&#xff0c;包不会冲突&#xff09;&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"…

基于Java农产品商城系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

OpenCV-31 获得形态学卷积核

OpenCV提供了获取卷积核的API&#xff0c;不需要我们手动创建卷积核。 通过下面API---getStructuringElement(shape&#xff0c;ksize&#xff0c;[, anchor]) shape是指卷积核的型状&#xff0c;注意不是指长宽&#xff0c;是指卷积核中1形成的形状。MORPH_RECT 卷积核中的1…

内网远程控制——anydesk

而通常这个时候我们有权限修改anydesk的配置文件&#xff0c;这里进行测试&#xff0c;起两个虚拟机&#xff0c;设定一个场景&#xff08;攻击机拿到了webshell&#xff0c;受害机开着windows defender&#xff0c;如何去渗透拿到受害机权限&#xff09; 情景复现 这里拿到了…

C#(C Sharp)学习笔记_If条件判断语句【五】

前言&#xff1a; 本期学习的是编程语言中的主要语句&#xff1a;if-条件判断语句。在这里我们会学到&#xff1a;if语法&#xff0c;if-else&#xff0c;和if嵌套。话不多说&#xff0c;我们开始吧&#xff01; 什么是条件判断语句&#xff1f; 条件语句是用来判断给定的条件…

WireShark使用教程(TCP/IP 部分情况居然变成三次挥手了???)

WireShark自学 WrieShark介绍WrieShark的应用常见协议包的抓取 WrieShark常用手段混杂模式 和 普通模式混杂模式打开方式普通模式 过滤器过滤器类型捕获过滤器显示过滤器语法捕获到的数据的列的含义常见的 Protocols - Values 键盘快捷键常用的过滤命令常用协议分析ARP 协议分析…

Unity类银河恶魔城学习记录3-4 EnemyBattleState P50

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Enemy.cs using System.Collections; using System.Collections.Generic; …

数据结构第十一天(栈)

目录 前言 概述 源码&#xff1a; 主函数&#xff1a; 运行结果&#xff1a; ​编辑 前言 今天简单的实现了栈&#xff0c;主要还是指针操作&#xff0c;soeasy! 友友们如果想存储其他内容&#xff0c;只需修改结构体中的内容即可。 哈哈&#xff0c;要是感觉不错&…

3D室内虚拟灭火体验为预防火灾提供全新方案

室内火灾常见于充电器未拔、电动车、油锅起火及煤气泄露等原因&#xff0c;由于室内空间小、易燃物多&#xff0c;因此极易造成较大的人员财产损失&#xff0c;3D仿真还原技术、通过1&#xff1a;1模拟还原火灾发生全过程&#xff0c;火灾VR安全培训提供全方位、真实感强的模拟…

【01】判断素数/质数(C语言)

目录 &#xff08;1&#xff09;素数特点&#xff1a;只能被1和本身整除 &#xff08;2&#xff09;代码如下&#xff1a; &#xff08;3&#xff09;运行结果如下 ​编辑 &#xff08;4&#xff09;函数引申 &#xff08;1&#xff09;素数特点&#xff1a;只能被1和本身…

基于AST实现一键自动提取替换国际化文案

背景&#xff1a;在调研 formatjs/cli 使用&#xff08;使用 formatjs/cli 进行国际化文案自动提取 &#xff09;过程中&#xff0c;发现有以下需求formatjs/cli 无法满足&#xff1a; id 需要一定的语义化&#xff1b; defaultMessage和Id不能直接hash转换&#xff1b; 需要…

2.6学习总结

2.6 1.蓝桥公园 2.路径 3.打印路径 4.【模板】Floyd Floyd算法&#xff1a; 是一种多源的最短路径算法&#xff0c;经过一次计算可以得到任意两个点之间的最短路径。 这种算法是基于动态规划的思想&#xff1a; m[i][j]表示从i到j这条边的距离&#xff0c;dp[k][i][j]表示从…

【代码随想录24】93.复原 IP 地址 78.子集 90.子集II

目录 93.复原IP地址题目描述参考代码 78.子集题目描述参考代码 90.子集II题目描述参考代码 93.复原IP地址 题目描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如…