寒假 day6

1.请编程实现二又树的操作。


1.1二又树的创建
1.2二又树的先序遍历
1.3二又树的中序遍历
1.4二又树的后序遍历
1.5二又树各个节点度的个数
1.6二叉树的深度

#include<stdio.h>
#include<string.h>	
#include<stdlib.h>
typedef char datatype;
//定义节点结构体
typedef struct Node
{//数据域datatype data;//指针域:存储左子孩子节点地址struct Node *lchild;//指针域:存储右子孩子节点地址struct Node *rchild;
}*Btree;//创建节点
Btree create_node()
{Btree s=(Btree)malloc(sizeof(struct Node));if(s==NULL)return NULL;//初始化s->data='\0';s->lchild=s->rchild=NULL;return s;
}
/** function:    创建二叉树* @param [ in] * @param [out] * @return      返回二叉树*/
Btree create_tree()
{datatype element;printf("please enter element:");scanf(" %c",&element);if(element=='#')return NULL;//创建节点Btree tree=create_node();tree->data=element;//递归实现循环左孩子puts("左");tree->lchild=create_tree();//递归实现循环右孩子puts("右");tree->rchild=create_tree();return tree;
}
/** function:    先序遍历* @param [ in] * @param [out] tree* @return      */
void first(Btree tree)
{if(NULL==tree)return ;//遍历根节点printf("%c",tree->data);//递归遍历左孩子first(tree->lchild);//递归遍历右孩子first(tree->rchild);
}
//中序遍历
void mid(Btree tree)
{if(NULL==tree)return ;//递归遍历左孩子mid(tree->lchild);//遍历根节点printf("%c",tree->data);//递归遍历右孩子mid(tree->rchild);
}
//后序遍历
void rear(Btree tree)
{if(NULL==tree)return ;//递归遍历左孩子rear(tree->lchild);//递归遍历右孩子rear(tree->rchild);//遍历根节点printf("%c",tree->data);
}
/** function:    计算 度* @param [ in] * @param [out] * @return      */void count(Btree tree,int *n0,int *n1,int *n2)
{if(NULL==tree)return ;if(!tree->lchild&&!tree->rchild)++*n0;else if(tree->lchild&&tree->rchild)++*n2;else++*n1;//递归遍历左孩子count(tree->lchild,n0,n1,n2);//递归遍历右孩子count(tree->rchild,n0,n1,n2);
}
/** function:    计算深度* @param [ in] * @param [out] * @return      深度*/
int high(Btree tree)
{if(NULL==tree)return 0;//递归计算左子树的深度int left=1+high(tree->lchild);//递归计算右子树的深度int right=1+high(tree->rchild);return left>right?left:right;
}
int main(int argc, const char *argv[])
{Btree tree=create_tree();//先序遍历
//	first(tree);
//	puts("");//中序遍历
//	mid(tree);
//	puts("");//后序遍历rear(tree);puts("");int n0=0,n1=0,n2=0;//计算各个度的个数count(tree,&n0,&n1,&n2);printf("no=%d n1=%d n2=%d n=%d\n",n0,n1,n2,n0+n1+n2);//树的深度int len=high(tree);printf("len=%d\n",len);return 0;
}

先序:

中序:

后序:

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

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

相关文章

隧道穿透:端口转发、socket隧道代理

目录 端口转发 lcx工具 Lcx工具正向连接 Lcx工具反向连接 SOCKET隧道代理 socks常见利用场景 Proxifier SocksCap64 Proxychains 端口转发 本篇会和搭建介绍一下端口转发和socket隧道代理的概念和简单演示 lcx工具 lcx工具是一个红队人员在内网渗透测试中最典型的端…

【Django】Cookie和Session的使用

Cookies和Session 1. 会话 从打开浏览器访问一个网站&#xff0c;到关闭浏览器结束此次访问&#xff0c;称之为一次会话。 HTTP协议是无状态的&#xff0c;导致会话状态难以保持。 Cookies和Session就是为了保持会话状态而诞生的两个存储技术。 2. Cookies 2.1 Cookies定…

SpringCloud--Gateway解析

一、Gateway简介 Gateway是Spring Cloud官方推出的第二代微服务网关&#xff0c;它旨在提供统一的路由方式以及为微服务应用提供强大的负载均衡能力。与第一代Spring Cloud Netflix Zuul相比&#xff0c;Spring Cloud Gateway在性能、可扩展性、易用性等方面都有了显著的提升。…

Spring框架入门指南

文章目录 Spring特点IoCAOPSpring事务事务隔离级别Spring注解Spring生命周期Spring创建完毕想要初始化一些操作注解的使用与开发Spring配置类加载XML配置文件静态工厂方法和实例工厂方法循环依赖&#xff08;循环引用&#xff09;三级缓存解决循环依赖问题SpringAOP延申动态代理…

Stable Diffusion 模型下载:Schematics(原理图)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 “Schematics”是一个非常个性化的LORA&#xff0c;我的目标是创建一个整体风格&#xff0c;但主要面向某些风格美学&#xff0c;因此它可以用于人物、物体、风景等…

如何在 Ubuntu 上安装 ONLYOFFICE 文档 8.0

通过使用社区版&#xff0c;您有能力在您自己的服务器上部署 ONLYOFFICE 文档&#xff0c;从而使在线编辑器与 ​​ONLYOFFICE 协作平台​​​或​​其他热门系统​​进行无缝集成。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一款全面的在线办公工具&#xff0c;提供了文本文档…

视频无损放大修复工具Topaz Video AI 新手入门教程

想要自学Topaz Video AI &#xff1f;Topaz Video AI 如何使用&#xff1f;这里给大家带来了视频无损放大修复工具Topaz Video AI 新手入门教程&#xff0c;快来看看吧&#xff01; 下载&#xff1a;Topaz Video AI for mac 导入您的文件 有两种方法可以将文件导入 Topaz Vid…

用于制作耳机壳的倒模专用UV树脂有什么特点?

制作耳机壳的UV树脂耳机壳UV胶具有以下特点&#xff1a; 快速固化&#xff1a;UV树脂可以在紫外线的照射下迅速固化&#xff0c;大大缩短了制作时间。高硬度与高耐磨性&#xff1a;UV树脂具有较高的硬度和耐磨性&#xff0c;能够提供良好的保护效果。透明度高&#xff1a;UV树…

Stata学习(1)

一、五大窗口 Command窗口&#xff1a;实现人机交互 来导入一个自带数据&#xff1a; sysuse是导入系统自带的数据&#xff0c;auto导入该数据的名称&#xff0c;后面的clear是清除之前的数据 结果窗口&#xff1a;展示计算结果、查找功能 在Edit的find可以实现查找功能&#…

go modules使用

创建项目 在使用GoLand创建项目的时候&#xff0c;会自动创建对应的go.mod文件。 创建完后 创建文件 创建一个main.go的文件&#xff0c;里面print一个hello world。 在运行时可以设置是否采取先生成文件再运行。 为空的话则不输出。 下面的Environment为设置运行的环境…

显示器校准软件:BetterDisplay Pro for Mac v2.0.11激活版下载

BetterDisplay Pro是一款由waydabber开发的Mac平台上的显示器校准软件&#xff0c;可以帮助用户调整显示器的颜色和亮度&#xff0c;以获得更加真实、清晰和舒适的视觉体验。 软件下载&#xff1a; BetterDisplay Pro for Mac v2.0.11激活版下载 以下是BetterDisplay Pro的主要…

Multisim14.0仿真(五十五)汽车转向灯设计

一、功能描述&#xff1a; 左转向&#xff1a;左侧指示灯循环依次闪亮&#xff1b; 右转向&#xff1a;右侧指示灯循环依次闪亮&#xff1b; 刹车&#xff1a; 所有灯常亮&#xff1b; 正常&#xff1a; 所有灯熄灭。 二、主要芯片&#xff1a; 74LS161D 74LS04D 74…