搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
知新_RL
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
用74ls00,74ls153,74ls151,74ls138设计三变量表决器_74ls153实现三人表决器
2
SQL之SQL索引
3
基于LR的新闻多分类(基于spark2.1.0, 附完整代码)_setelasticnetparam是什么意思
4
关于Android日历视图控件CalendarView
5
Tensorflow安装及在pycharm和jupyter中的配置步骤-CUP详细版_pycharm配置tensorflow
6
基于jsp和SSM实现宠物医院信息管理系统演示【附项目源码】分享_免费开源宠物医院系统
7
python海龟作图简单代码,python海龟库函数大全_python海龟绘图代码大全
8
KataGO(引擎安装及解释)
9
通信工程毕设 基于STM32的智能药箱系统设计与实现
10
四级高频词汇
当前位置:
article
> 正文
c语言的二叉树的创建_c语言利用str串创建二叉链
作者:知新_RL | 2024-04-30 17:30:28
赞
踩
c语言利用str串创建二叉链
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 100//定义最大的节点数
//创建二叉树的类型
typedef struct TNode{
char data;//数据类型
struct TNode *left,*right;
}*BinTree;//定义指针变量
//输入字符串返回二叉链表
BinTree cearteTree(char *str){//返回的是一个二叉链表
BinTree s[M],b=NULL,p;//初始栈,初始化root指针,定义一个用来创建的指针
int top=-1,i=0,flag=1;//原始栈为空,定义标志位flag=1
while(str[i]!='\0'){//字符串遍历完成
if(str[i]!='#'){
p=(BinTree)malloc(sizeof ( struct TNode));//如果不是#申请存储空间
p->data=str[i];//为当前的数据赋值
p->left=p->right=NULL;//初始话左右指针
if(b==NULL){//判断是否有双亲节点
b=p;
}else{
switch(flag){
case 1:s[top]->left=p;break;//使双亲节点的左指针指向当前的指针
case 2:s[top]->right=p;top--;break;//使双亲节点的左指针指向当前的指针,双亲节点出战
}
}
top++;//指针后移
s[top]=p;//将当前的值入栈
flag=1;//刷新当前的flag
}else{
flag=2;//标记为右指针
if(str[i-1]=='#'){//若上一个是#代表左右都是空
top--;//指针后移
}
}
i++;//字符元素后移
}
return b;//最后返回根节点b
}
//先序遍历,底层为递归算法
void preorder(BinTree b){
if(b==NULL){
return ;
}else{
printf("%-5c",b->data);//输出对应的结果
preorder(b->left);//向左递归查找
preorder(b->right);//向右递归查找
}
}
//中序遍历,底层为递归算法
void center(BinTree b){
if(b==NULL){
return ;
}else{
preorder(b->left);//向左递归查找
printf("%-5c",b->data);//输出对应的结果
preorder(b->right);//向右递归查找
}
}
//后序遍历,底层为递归算法
void finall(BinTree b){
if(b==NULL){
return ;
}else{
preorder(b->left);//向左递归查找
preorder(b->right);//向右递归查找
printf("%-5c",b->data);//输出对应的结果
}
}
int main(){
char s[M];//定义一个最大大小的字符数组
BinTree b;//定义一个二叉树的头指针b
gets(s);//得到输入的字符串
b=cearteTree(s);//创建二叉树
preorder(b);//先序遍历
printf("\n");
center(b);//中序遍历
printf("\n");
finall(b);//后序遍历
printf("\n");
return 0;
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/知新_RL/article/detail/514410
推荐阅读
article
虹科
Pico
NVH
许可
密钥
_picodiagnostics
许可
密钥
...
用户购买了虹科
Pico
NVH
设备之后,必须要输入一个
许可
密钥
才能使用示波器来进行
NVH
测试。激活得到
许可
密钥
的方法如下...
赞
踩
article
Python
用
GARCH
对
ADBL
股票价格
时间序列趋势滚动
预测
、损失、可视化分析...
全文链接:https://tecdat.cn/?p=33398金融市场的
股票价格
时间序列分析一直以来都是投资者和研究者关...
赞
踩
article
数组
--
王争
数据结构
与
算法
学习笔记_
数据结构
算法
王争...
数组
看起来简单基础,但是很多人没有理解这个
数据结构
的精髓。
数组
(Array)是一种线性表
数据结构
。它用一组连续的内存空间...
赞
踩
article
Python
加速小技巧
:
如何切
换
到
国内
源
_
python
换
国内
源
...
清华
:
https://pypi.tuna.tsinghua.edu.cn/simple阿里云
:
http://mirror...
赞
踩
article
如何用
burp
抓取手机
模拟器
的
包
_
burp
suite抓
包
安卓
模拟器
...
使用
burp
suite抓取手机
模拟器
的
包
_
burp
suite抓
包
安卓
模拟器
burp
suite抓
包
安卓
模拟器
...
赞
踩
article
navicat
12 删除时间
文件
达到延长 可用时间_如何延长
navicat
12
for
mac
...
第一次执行start_
navicat
时,会在跟目录下生成一个名为.
navicat
的隐藏
文件
夹。cd .
navicat
64...
赞
踩
article
如何不用
手机号
获取
自己的
opeai
中的
key
_没有国外
手机号
怎么
获取
openai
密钥...
3、按照如下操作,在图片中的第三步操作完后,第四步输入login,然后刷新页面,就可以看到了第五步,在第六步箭头指的位置...
赞
踩
article
Navicat
清除
注册
表的步骤_清除
navicat
注册
信息...
1.关闭
Navicat
程序。2.搜索“运行”程序,输入regedit调出Windows系统
注册
表。3.删除HKEY_CU...
赞
踩
article
全硬件
TCP
/
IP
协议
栈
学习
笔记(第四天:全硬件
TCP
/
IP
协议
模块
学习
)_
学习
tcpip
用
以太网
转...
做了许多天的网络
协议
学习
,懵懵懂懂了解了点,索性打开说明书开始模块的
学习
之前三天的
学习
都是在
协议
栈
上,今天的
学习
进入以太...
赞
踩
article
日常小记之
DBeaver
简单
使用
操作
_
dbeaver
命令行
窗口
在哪...
本人电脑为win10系统。 之前连接数据库都
使用
navicat(用于连接mysql数据库得一个图像化数据库连接工具...
赞
踩
article
Go
语言
面试题
合集(2022)_
go
scheduler
面试题
...
强三色不变式:不存在黑色对象引用白色对象的情况了, 因为白色会强制变成灰色。当全部三色标记扫描之后,栈上有可能依然存在白...
赞
踩
article
Golang
每日经典
面试题
【
反射
】
(
三
)
...
在Go语言中,
反射
(
Reflection
)
是一种强大的机制,它允许程序在运行时检查类型的信息、获取和修改变量的值、调用...
赞
踩
article
MySQL
中
的
sum
函数
用法实例详解_
mysql
sum
...
今天分享一下
mysql
中
的
sum
函数
使用。该
函数
已经成为大家操作
mysql
数据库
中
时常用到的一个
函数
,这个
函数
统计满足条...
赞
踩
article
蓬莱小课:优秀
的
数据分析
报告
,必备
的
12个
要点
_
数据分析
报告
的
要点
有
哪些...
先说说写一份好
的
数据分析
报告
的
重要性,很简单,因为分析
报告
的
输出是你整个分析过程
的
成果,是评定一个产品、一个运营事件
的
定...
赞
踩
article
uni
app
获取
当前位置和
经纬度
信息(
app
端高德地图)_
uni
-
app
app
端根据
经纬度
获取
ad...
在
app
中,使用高德地图快速
获取
当前位置信息,
获取
定位信息_
uni
-
app
app
端根据
经纬度
获取
address
uni
-...
赞
踩
article
大
语言
模型
落地的
关键技术
:
RAG
_rag
大
语言
模型
...
RAG
是检索增强生成(Retrieval-Augmented Generation)的简称,是当前最火热的
大
语言
模型
应...
赞
踩
article
Flutter
环境搭建(Linux系统)以及
Android
项目创建
Flutter
module
_wi...
官网:https://
flutter
.dev/docs/get-started/install下载
Flutter
sdk...
赞
踩
article
「
Kafka
」
Broker
篇_
kafka
broker
...
Kafka
存储数据、Zookeeper 在
Kafka
中的作用、
Broker
总体工作流程、节点服役和退役、
Kafka
...
赞
踩
article
研一
NLP
学习
笔记1
_
n
_
vocab
...
NLP
初级笔记1
_
n
_
vocab
n
_
vocab
截至到二月上旬,给自己研一上和寒假的
学习
做一个总...
赞
踩
article
如何
评估
RAG
应用
的
质量?最典型
的
方法论
和
评估
工具都在这里了_
trulens
-
eval
...
这种情况下需要衡量
的
就是上文
RAG
三元组指标中
的
Context Relevance,也就是对比 ground-tr...
赞
踩
相关标签
虹科Pico汽车示波器
虹科Pico NVH设备
许可密钥
汽车维修
免拆诊断
故障
python
开发语言
数据结构
网络
安全
Linux
MySQL
Navicat
gpt
FPGA
以太网
硬件
c
golang
面试
go
mysql
数据库