二叉树(C++,代码)

news2024/11/17 1:44:13
 例子:前序输入                 AB##CDF#G#E####            (#表示空,不存在)

#include<iostream>
using namespace std;
typedef struct BiNode
{
	char data;
	struct BiNode* lchild, * rchild;
}BiNode,*Bitree;
char ch;
int m, n;
typedef struct 
{
	char data[100];
	int front, rear;
}sqqueue;
bool newtree(Bitree& t)//初始化树
{
	t = new BiNode;
	return 1;
}
void createbitree(Bitree& t)//前序建树
{
	t = new BiNode;
	cin >> ch;
	if (ch == '#') t = NULL;
	else
	{
		t->data = ch;
		createbitree(t->lchild);
		createbitree(t->rchild);
	}
}
int Copy(Bitree t, Bitree &newt)//复制树
{
	if (t == NULL)
	{
		newt = NULL;
		return 0;
	}
	else
	{
		newt = new BiNode;
		newt->data = t->data;
		Copy(t->lchild, newt->lchild);
		Copy(t->rchild, newt->lchild);
	}
	return 1;
}
int Depth(Bitree t)//深度
{
	if (t == NULL) 
		return 0;
	else
	{
		m = Depth(t->lchild);
		n = Depth(t->rchild);
		if (m > n) return(m + 1);
		else return (n + 1);
	}
}
int Nodecount(Bitree t)//节点数
{
	if (t == NULL) return 0;
	else return Nodecount(t->lchild) + Nodecount(t->rchild) + 1;
}
int Leadcount(Bitree t)//叶子节点数
{
	if (t == NULL) return 0;
	if (t->lchild == NULL && t->rchild == NULL)
		return 1;
	else
		return Leadcount(t->lchild) + Leadcount(t->rchild);
}
bool pretree(Bitree t)//前序遍历
{
	if (t == NULL) return true;
	else
	{
		cout << t->data;
		pretree(t->lchild);
		pretree(t->rchild);
	}
	return 1;
}
bool intree(Bitree t)//中序遍历
{
	if (t == NULL) return true;
	else
	{
		intree(t->lchild);
		cout << t->data;
		intree(t->rchild);
	}
	return true;
}
bool posttree(Bitree t)//后序遍历
{
	if (t == NULL) return true;
	else
	{
		posttree(t->lchild);
		posttree(t->rchild);
		cout << t->data;
	}
	return 1;
}
int main()
{
	int n;
	cin >> n;
	Bitree t;
	newtree(t);
	while (n)
	{
		if (n == 1)//前序建立二叉树 #表示空
		{
			cout << "前序建立二叉树 #表示空" << endl;
			createbitree(t);
		}
		if (n == 2)//复制树
		{
			cout << "复制树" << endl;
			Bitree newt;
			Copy(t, newt);
		}
		if (n == 3)//二叉树深度
		{
			cout << "二叉树深度" << endl;
			int a = Depth(t);
			cout << a<<endl;
		}
		if (n == 4)//节点数
		{
			cout << "节点数" << endl;
			int a = Nodecount(t);
			cout << a<<endl;
		}
		if (n == 5)//叶子节点数
		{
			cout << "叶子节点数"<<endl;
			int a = Leadcount(t);
			cout << a<<endl;
		}
		if (n == 6)//前序遍历
		{
			cout << "前序遍历" << endl;
			pretree(t); 
			cout << endl;
		}
		if (n == 7)//中序遍历
		{
			cout << "中序遍历" << endl;
			intree(t);
			cout << endl;
		}
		if (n == 8)//后序遍历
		{
			cout << "后序遍历" << endl;
			posttree(t);
			cout << endl;
		}
		cout << "输入n" << endl;;
		cin >> n;
	}
}

 

 

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

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

相关文章

(小白必看)详解yolov5训练自己的数据集 使用香烟数据集训练yolov5识别香烟

数据集资源 https://download.csdn.net/download/qq_42864343/88110620?spm1001.2014.3001.5503 https://download.csdn.net/download/qq_42864343/88110686?spm1001.2014.3001.5501 创建数据集目录 在YOLOv5根目录下创建mydata文件夹&#xff08;名字可以自定义&#xf…

如何少走弯路?蚓链助力零售企业实现数字化转型

基于大环境下的数据驱动&#xff0c;创新业务模式成为了后疫情时代下零售企业冲破困局、拓展业务的必然趋势&#xff0c;新零售概念应运而生。新零售结合数字化应用技术为传统零售企业打造线上营销生态链&#xff0c;帮助企业积累数据&#xff0c;盘活数据实现更大营收价值。 …

CTFshow web入门 爆破

web21 bp 攻击模块的迭代器 输入账号密码 抓包 发现下面存在一个base64编码 我输入的是 123 123 发现就是base加密 账号 密码 那我们怎么通过intruder模块 自动变为 base64呢 然后去payload------>custom iterator(自定义迭代器) 位置1导入admin 因为是 账号:密码 这…

三维虚拟电子沙盘数字沙盘态势推演教程第12课

三维虚拟电子沙盘数字沙盘态势推演教程第12课 设置system.ini 如下内容 Server122.112.229.220 userGisTest Passwordchinamtouch.com 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 SDK中自带了一套 导航系统&#xff0c;用的是比较详细的…

一种分解多种信号模式非线性线性调频的方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

值得关注的五个先进代码补全服务

效率、代码质量和生产力在编程中都是至关重要的组成部分。因此&#xff0c;开发人员不断寻求能够加快编程过程的工具&#xff0c;以提高其工作效率和质量。 在编程这个不断发展的领域&#xff0c;目前最具革命性的进展之一就是AI驱动的代码补全服务。这些工具不仅简化了编程过程…

小程序获取手机号要开始收费了!

收费说明 自2023年8月26日起&#xff0c;手机号实时验证组件将需要付费使用。 手机号快速验证组件 手机号快速验证组件 | 微信开放文档 新版本组件不再需要提前调用wx.login进行登录。 代码示例 <button open-type"getPhoneNumber" bindgetphonenumber"ge…

机器学习02-再识K邻近算法(自定义数据集训练及测试)

定义&#xff1a; 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别&#xff0c;则该样本也属于这个类别。简单的说就是根据你的“邻居”来推断出你的类别。 用个成语就是物以类聚 思想&#xff1a; 如果一个样本在特征空间中的K个最…

【Linux命令200例】用file检查文件类型

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…

vue生命周期的传统写法和setup语法糖写法

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;vue生命周期的传统写法和setup语法糖写法 文章目录 setup语法糖设计目的vue3钩子函数beforeCreated和created被封装传统写法和语法糖写法的对比 setup语法糖设计目的 <script setup> 语法糖的…

Linux6.17 Docker 安全及日志管理

文章目录 计算机系统5G云计算第四章 LINUX Docker 安全及日志管理一、Docker 容器与虚拟机的区别1.隔离与共享2.性能与损耗 二、Docker 存在的安全问题1.Docker 自身漏洞2.Docker 源码问题 三、Docker 架构缺陷与安全机制1.容器之间的局域网攻击2.DDoS 攻击耗尽资源3.有漏洞的系…

大模型部署框架 FastLLM 实现细节解析

0x0. 前言 接着 大模型部署框架 FastLLM 简要解析 这篇文章首先梳理了一下FastLLM的调用链和关键的数据结构&#xff0c;然后解析了 FastLLM 的一些实现细节和CPU/GPU后端实现采用的优化技巧。 0x1. 调用链和数据结构解析 以chatglm-6b的支持为例&#xff0c;函数入口在 htt…

数据库索引优化与查询优化——醍醐灌顶

索引优化与查询优化 哪些维度可以进行数据库调优 索引失效、没有充分利用到索引-一索引建立关联查询太多JOIN (设计缺陷或不得已的需求) --SQL优化服务器调优及各个参数设置 (缓冲、线程数等)–调整my.cnf数据过多–分库分表 关于数据库调优的知识点非常分散。不同的 DBMS&a…

TypeError: run() got an unexpected keyword argument ‘hide_label‘ yolov5最新版本报错

报错展示 解决方法 把detect.py中的如上部分的 --hide-label改为 --hide-labels&#xff0c;成功解决.

EtherNet IP转PROFINET网关连接西门子与欧姆龙方法

本文主要介绍了捷米特JM-PN-EIP&#xff08;EtherNet/IP转PROFINET&#xff09;网关西门子200智能PLC&#xff08;PROFINET&#xff09;和欧姆龙系统EtherNet/IP通信的配置过程。 1, 将 EDS 文件复制到欧姆龙软件的对应文件夹下 2, 首先添加捷米特JM-PN-EIP网关的全局变量&…

Matlab出现load(‘data/2Dletters/C.mat‘)错误,即加载数据错误

在运行matlab程序时&#xff0c;如果出现加载数据错误&#xff0c;则是因为没有定位到相应文件夹。 解决办法如下&#xff1a; 通过红色框左边的选项&#xff08;浏览文件夹&#xff09;定位到我们所运行.m程序所在的文件夹即可

数据库监控工具-PIGOSS BSM

PIGOSS BSM 运维监控系统的重要功能之一是数据库监控&#xff0c;它能够帮助数据库管理员(DBA)和系统管理员监控包含Oracle、SQL Server、MySQL、DB2、PostgreSql、MongoDB、达梦、南大通用、人大金仓、神州通用等多种类异构型的数据库环境。PIGOSS BSM通过执行数据库查询来采集…

C#如何使用SQLite数据库?

文章目录 0.引言1.SQLite工具准备2.创建窗体项目并添加SQLite的命名空间3.编写使用SQLite代码4.结果展示 0.引言 SQLite是一个轻量级的嵌入式数据库&#xff0c;它的库文件非常小巧&#xff0c;不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用&#xff…

飞凌嵌入式荣获「河北省企业技术中心」认定

近期&#xff0c;河北省发展和改革委员会发布了2023年河北省企业技术中心认定公示&#xff0c; 保定飞凌嵌入式技术有限公司成功通过省级企业技术中心认定。 省级企业技术中心在企业创新体系和创新能力的建设中发挥引导与示范作用&#xff0c;此次荣誉的获得是对飞凌嵌入式推进…