hai子兄弟表示法(C语言实现)——树的存储结构

2023-10-27


//	孩子兄弟表示法实际就是创建一棵二叉树 

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef char DataType;

typedef struct TNode
{
	DataType data;				//	数据域
	struct TNode * fchild;		//	第一个孩子指针域 
	struct TNode * rsibling; 	//	右兄弟指针域
	 
}*Tree;
int n = 0;

void Creat_Tree(Tree * T);					//	建立树(类似建立二叉树) 
bool Search_Node(Tree T, char temp);		//	搜查某个结点以及它的兄弟结点 
void PreOrder_Traverse(Tree T);				//	前序遍历 
void InOrder_Traverse(Tree T);				//	中序遍历 
void PostOrder_Traverse(Tree T);			//	后序遍历 
 
int main()
{
	Tree T;
	printf("请输入根结点:"); 
	Creat_Tree(&T);
	Search_Node(T, 'C');
	printf("\n先序遍历:");
	PreOrder_Traverse(T);
	printf("\n");
	
	return 0;
}

//	防止产生空指针异常 
void Creat_Tree(Tree * T)
{
	char ch;
	scanf("%c",&ch);
	fflush(stdin);
	if(ch == '#')
	{
		*T = NULL;
		return;
	}
	else
	{
		*T = (Tree)malloc(sizeof(struct TNode));
		(*T)->data = ch;
		n++;
		printf("请输入%c的第一个孩子:", ch);
		Creat_Tree(&(*T)->fchild);
		printf("请输入%c的右兄弟:", ch);
		Creat_Tree(&(*T)->rsibling);
	}
}

bool Search_Node(Tree T, char temp)
{
	if(!T)
		return false;
	
	if(T->data == temp)
	{
		if(T->rsibling != NULL)
		{
			Tree p = T->rsibling;
			printf("\n查找成功!\n");
			printf("查找的结点:%c\n",temp);
			printf("%c的右兄弟:%c\n",temp,p->data);
			return true;
		}
		else
		{	
			printf("\n\n抱歉!查找失败\n");
			return false; 
		}
	}
	
	Search_Node(T->fchild, temp);
	Search_Node(T->rsibling, temp);
}

void PreOrder_Traverse(Tree T)
{
	if(!T)
		return;
	else
	{
		printf("%3c",T->data);
		PreOrder_Traverse(T->fchild);
		PreOrder_Traverse(T->rsibling);
	}
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hai子兄弟表示法(C语言实现)——树的存储结构 的相关文章

  • 实战分享:基于python PyQt5的视频监控系统 完整代码数据 课程设计

    代码视频讲解 PyQt5的视频监控系统 基于python PyQt5的视频监控系统 完整代码可直接运行 哔哩哔哩 bilibili import sys import cv2 from PyQt5 Qt import from PyQt5
  • pandoc 使用_如何使用Pandoc撰写研究论文

    pandoc 使用 本文深入探讨了如何使用 主要是 Markdown语法来撰写研究论文 我们将介绍如何创建和引用节 图形 在Markdown和LaTeX中 和参考书目 我们还将讨论麻烦的案例 以及为什么在LaTeX中编写它们是正确的方法 研
  • CGAL配置的一点心得(各种错误的解决办法)

    这几天由于项目关系 花了些时间配置了一下CGAL 说实话走了不少弯路 谈谈我的心得吧 具体流程我不想讲 这种东西网上博客一搜一大把 而且都有一定的参考价值 当然最值得推荐的还是官网http www cgal org download win
  • 新能源汽车涨价的背后,究竟有哪些原因?

    新能源车企宣布涨价 前段时间 不仅油价接连上涨 新能源车企也接连宣布调价 根据不完全统计 今年2月后 已有超过16家车企因原料价格上涨宣布提价 下面云恒制造小编带大家来看一下 主要新能源车企涨价情况 其余车企如岚图 极氪等内部正在酝酿涨价
  • dbnull mysql_关于.net:无法将’System.DBNull’类型的对象强制转换为’System.String’类型...

    本问题已经有最佳答案 请猛点这里访问 我正在使用MVC3 ASP 并已将我的web config文件配置为以root用户身份登录MYSQL数据库 我创建了许多存储过程 我可以很好地连接 我现在想要将此登录用户更改为公共用户 称为tempus
  • g.729a 音频编解码算法

    g 729 spirit dsp定义 音频压缩编码 1 什么是语音编码技术 其发展与现状是怎样的 答 语音信号的数字化传输 一直是通信的发展方向之一 采用低速率语音编码技术进行语音传输比语音信号模拟传输有诸多优点 现代通信的发展趋势决定了语

随机推荐

  • 深入理解Https如何保证通信安全

    作为一名ABC搬运工 我相信很多人都知道Https 也都知道它是用来保证通信安全的 但是如果你没有深入了解过Https 可能并不知道它是如何保证通信安全的 我也是借着这次机会 和大家分享下我深入了解的一个过程 本文主要带着以下几个问题进行探
  • Ubuntu18.04更换源及类似问题解决方案

    Ubuntu18 04更换源及类似问题解决方案 文章目录 Ubuntu18 04更换源及类似问题解决方案 1 前言 2 Ubuntu18 04 LTS 更换国内源 3 最后 1 前言 目前部分开发板使用的Ubuntu操作系统 使用Qt RO
  • WSL重启方法

    WSL Ubuntu18 04 LTS 重启方法 以管理员权限运行cmd gt gt net stop LxssManager 停止 gt gt net start LxssManager 启动
  • 抓取一闪而过的提示消息文本

    前端业务操作出现一闪而过的message提示信息 它们有一个特点就是显示1 2s后会自动消失 例如下图1 图1 这些消息不像 alert 警告框 confirm 确认框 和prompt 提示框 那样 需要用户手动点击确定或取消按钮后才消失
  • 华为od机考真题-HJ32密码截取(中等)

    求最大回文子串 while 1 try str1 input if len str1 1 print 1
  • 渗透测试学习目录

    网络攻击防范 课程介绍 1 HTML 01 HTML标签和文本属性 02 form表单 input 标签 属性 03 a标签 img标签 table标签 04 无序列表和有序列表 05 frameset frame 框架的使用 2 div
  • VS离线安装NuGet包

    VS离线安装NuGet包 以VS 2017为例 一 下载NuGet包 官方NuGet包下载网址 https www nuget org 1 搜索需要下载的包名称 点击进入包详情页面 2 点击Download package 下载离线包 3
  • [NOI2011]阿狸的打字机【AC自动机fail树+树状数组】

    题目链接 P2414 题目给出N个字符串 我们现在想知道的是第x个字符串在第y个字符串中出现的次数是多少次 求每个字符在其余字符中出现次数 想到从AC自动机上走 其实可以看作是求它的后缀的前缀中有多少个是满足的 换言之 我们可以去fail树
  • 日前日内多阶段多时间尺度源荷储协调调度(matlab代码)

    多阶段多时间尺度的源荷储协调调度的优势是考虑新能源出力的波动性与随机性 减少需求响应负荷的不确定性会对电网制定的日前调度计划准确性的影响 也就是能够更加精准的进行调度和分析 优化结果的可用性更强 在这方面论文里面 金力的 考虑特性分布的储能
  • 如何利用excel中的数据源制作数据地图

    关于这个问题 制作数据地图的方法已不新奇 总体来说有这么几类方案 一类方案 直接在excel里制作 优势 个人小数据量应用较为方便简单 缺点 需要熟悉VBA 且更强大的功能对VBA水平要求较高 1 绘制地图图形 VBA宏语言 思路 用插入图
  • MOS管相关知识

    MOS管 MOS管的英文全称叫MOSFET Metal Oxide Semiconductor Field Effect Transistor 即金属氧化物半导体型场效应管 属于场效应晶体管中的绝缘栅型 MOS管是场效应管的一种 在一般电子
  • 版本号自动生成方法

    只需把 AssemblyInfo cs文件中的 assembly AssemblyVersion 1 0 0 0 改成 assembly AssemblyVersion 1 0 另外还需要把 assembly AssemblyFileVer
  • 什么是负载均衡,看完文章秒懂

    一 负载均衡简介 1 1 大型网站面临的挑战 大型网站都要面对庞大的用户量 高并发 海量数据等挑战 为了提升系统整体的性能 可以采用垂直扩展和水平扩展两种方式 垂直扩展 在网站发展早期 可以从单机的角度通过增加硬件处理能力 比如 CPU 处
  • 运行时报错“version `GLIBCXX_3.4.29‘ not found”底层原理分析

    文章目录 1 报错的现象 2 为什么程序有的报找不到某个版本的动态库 有的报找不到动态库文件 2 1 找不到动态库 2 2 找不到某个版本的动态库 2 2 1 报错的原因 2 2 2 动态库的版本是如何指定的 程序又是如何记录依赖的动态库版
  • DecimalField的使用

    DecimalField 类 DecimalField max digits 无 decimal places 无 选项 固定精度的十进制数 在Python中表示一个 十进制的实例 有两个必需的参数 DecimalField max dig
  • 浏览器插件下载“Download failed. Please check your connection.”解决方法

    第一步 查看错误原因 Download failed Please check your connection 下载失败 请检查您的连接 第二步 根据问题根源查看connects相关设置 第三步 分析原因 我是开启了Manual proxy
  • NeRF必读:Instant-NGP----RTX3090单卡就能玩转NeRF

    前言 NeRF从2020年发展至今 仅仅三年时间 而Follow的工作已呈井喷之势 相信在不久的将来 NeRF会一举重塑三维重建这个业界 甚至重建我们的四维世界 开头先吹一波 NeRF的发展时间虽短 有几篇工作却在我研究的领域开始呈现万精油
  • C语言---双向链表(详解)---数据结构

    双向链表所需要头文件 首先重定义类型名 意义我前几篇讲过几次了 这里就不在赘述了 顺序表 单链表的开头都有说明 然后我们需要一个结构体 结构体包含 存储数据的 a 指向一个节点的指针 next 指向上一个节点的指针 prve 双向链表实现的
  • pgadmin4更改数据类型和主键

    在 pgAdmin 4 中更改数据类型和主键需要以下步骤 打开 pgAdmin 4 连接到您想要修改的数据库 找到并打开您想要修改的表 单击该表后单击 设计 按钮 找到要修改的列 单击该列后单击 编辑 删除 按钮 在弹出的窗口中 更改 数据
  • hai子兄弟表示法(C语言实现)——树的存储结构

    孩子兄弟表示法实际就是创建一棵二叉树 include