首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
perl
format
process
bitmap
spring
command
blob
httpclient
replace
cookie
regex
md5
cpython
require
filter
lua
scala
instance
dagger
grid
actionscrip
join
cSharp
controller
uml
cPlusPlus
chat
select
bash
tags
python3
python
runtime
python2
php7
case
stream
triggers
eval
timestamp
post
substring
php8
netty
dockerfile
web3
heatmap
tree
heap
php
golang
foreach
char
schema
bit
window
function
future
timezone
expression
less
iostream
hashset
web
audio
export
client
uri
input
main
bytecode
split
plugins
integer
cmd
random
search
dll
install
当前位置:
开发笔记
>
编程语言
> 正文
二叉树层序创建问题的解决方法
作者:慌瓜 | 来源:互联网 | 2023-12-13 18:20
本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。
#include
#include
struct queue //队列结构体
{
struct tree * data[20];
int front;
int reat;
};
struct tree //二叉树 结构体
{
char data;
struct tree *left;
struct tree *right;
};
void rudui(struct queue *p,struct tree *val);
bool panduan(struct queue *p);
struct tree * chudui(struct queue *p);
struct tree *create (void);
void xianxubianli(struct tree *p);
int main(void)
{
struct tree *p=create();//动态创建二叉树
xianxubianli(p); //先序遍历
return 0;
}
void rudui(struct queue *p, struct tree *val) //入队
{
if(panduan(p))
printf("队列已满\n");
else
p->data[p->reat]=val;
p->reat=(p->reat+1)%20;
return;
}
bool panduan(struct queue *p) //判断队列是否满了
{
if(p->frOnt==(p->reat+1)%20)
return true;
else
return false;
}
struct tree * chudui(struct queue *p) //出队
{
struct tree *T;
if(p->front!=p->reat)
{
T=p->data[p->front];
p->frOnt=(p->front+1)%20;
}
else
printf("队列为空\n");
return T;
}
struct tree *create (void) //层序创建二叉树
{
char data; //根结点存放的数据
char dataleft; //左子树存放的数据
char dataright; //右子树存放的数据
struct queue Q;
Q.frOnt=0;
Q.reat=0;
struct tree *BT,*T; //BT是根结点,T是子结点
scanf("%d",&data);
if(data!=0)
{
BT=(struct tree*)malloc(sizeof(struct tree));
BT->data=data;
rudui(&Q,BT);
}
else
return NULL;
while(Q.front!=Q.reat)
{
T=chudui(&Q);
scanf("%d",&dataleft);
if(dataleft==0)
T->left=NULL;
else
T->left=(struct tree*)malloc(sizeof(struct tree));
T->left->data=dataleft;
scanf("%d",&dataright);
if(dataright==0)
T->right=NULL;
else
T->right=(struct tree*)malloc(sizeof(struct tree));
T->right->data=dataright;
}
return BT;
}
void xianxubianli(struct tree *p)
{
if(p)
{
printf("%c ",p->data);
xianxubianli(p->left);
xianxubianli(p->right);
}
return;
}
程序是用层序创建二叉树(通过入队出队),大神帮我看看哪里出错了?
5 个解决方案
#1
while循环里面的else语句缺少花括号
#2
引用 1 楼 qq_28273387 的回复:
while循环里面的else语句缺少花括号
改了还是不行啊,能帮我改改吗
#3
两个else语句都要加花括号
#4
调试结果截图给我看下
#5
#include
using namespace std;
#include
#include
struct queue //队列结构体
{
struct tree * data[20];
int front;
int reat;
};
struct tree //二叉树 结构体
{
char data;
struct tree *left;
};
void rudui(struct queue *p, struct tree *val);
bool panduan(struct queue *p);
struct tree * chudui(struct queue *p);
struct tree *create(void);
void xianxubianli(struct tree *p);
int main(void)
{
struct tree *p = create();//动态创建二叉树
xianxubianli(p); //先序遍历
system("pause");
return 0;
}
void rudui(struct queue *p, struct tree *val) //入队
{
if (panduan(p))
printf("队列已满\n");
else
p->data[p->reat] = val;
p->reat = (p->reat + 1) % 20;
return;
}
bool panduan(struct queue *p) //判断队列是否满了
{
if (p->front == (p->reat + 1) % 20)
return true;
else
return false;
}
struct tree * chudui(struct queue *p) //出队
{
struct tree *T;
if (p->front != p->reat)
{
T = p->data[p->front];
p->front = (p->front + 1) % 20;
return T;
}
else
printf("队列为空\n");
return 0;
}
struct tree *create(void) //层序创建二叉树
{
char data; //根结点存放的数据
char dataleft; //左子树存放的数据
char dataright; //右子树存放的数据
struct queue Q;
Q.front = 0;
Q.reat = 0;
struct tree *BT, *T; //BT是根结点,T是子结点
cin>>data;
if (data != 0)
{
BT = new tree();
BT->data = data;
rudui(&Q, BT);
}
else
return NULL;
while (Q.front != Q.reat)
{
T = chudui(&Q);
cin >>dataleft;
if (dataleft == 0)
T->left = NULL;
else{
T->left = new tree();
T->left->data = dataleft;
}
cin>>dataright;
if (dataright == 0)
T->right = NULL;
else{
T->right = new tree();
T->right->data = dataright;
}
}
return BT;
}
void xianxubianli(struct tree *p)
{
if (p)
{
printf("%c ", p->data);
xianxubianli(p->left);
xianxubianli(p->right);
}
return;
}
include
io
struct
queue
队列
tree
int
char
main
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
process
UNIX进程间通信(IPC)详解
本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ...
[详细]
蜡笔小新 2024-12-20 10:14:51
require
贪心与优先队列:最小化加法代价问题
本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ...
[详细]
蜡笔小新 2024-12-20 23:20:38
require
Linux环境下进程间通信:深入解析信号机制
本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ...
[详细]
蜡笔小新 2024-12-21 10:29:05
require
2019西安邀请赛J题解析:树形动态规划求解异或路径问题
本文详细解析了2019年西安邀请赛中的一道树形动态规划题目——J题《And And And》。题目要求计算树中所有子路径异或值为0的集合数量,通过深入分析和算法优化,提供了高效的解决方案。 ...
[详细]
蜡笔小新 2024-12-19 15:29:11
require
丽江客栈选择问题
本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ...
[详细]
蜡笔小新 2024-12-22 20:15:25
require
CodeChef 2014 April Challenge - Chef的最终对决:数据结构与整体二分的应用
本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ...
[详细]
蜡笔小新 2024-12-22 19:34:39
require
紫荆花之恋:动态树上的小精灵友谊问题
本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ...
[详细]
蜡笔小新 2024-12-22 14:36:54
format
Linux环境下C语言实现定时向文件写入当前时间
本文介绍如何在Linux系统中使用C语言编程,实现在每秒钟向指定文件中写入当前时间戳。通过此示例,读者可以了解基本的文件操作、时间处理以及循环控制。 ...
[详细]
蜡笔小新 2024-12-21 21:39:27
process
由二叉树到贪心算法
二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ...
[详细]
蜡笔小新 2024-12-21 13:13:13
command
并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ...
[详细]
蜡笔小新 2024-12-21 12:39:07
command
二叉树的链表实现
本文介绍了一种使用链表结构表示二叉树的方法。通过定义节点结构和相关操作函数,可以方便地创建、插入和遍历二叉树。 ...
[详细]
蜡笔小新 2024-12-21 11:37:21
spring
Java异步编程实践
本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ...
[详细]
蜡笔小新 2024-12-20 18:02:19
spring
HDU 2871 内存管理问题(线段树优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871。本题涉及内存管理操作,包括重置、申请、释放和查询内存块。通过使用线段树进行高效管理和维护。 ...
[详细]
蜡笔小新 2024-12-20 10:59:14
spring
优化Spring Boot项目,大幅提升并发性能
本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ...
[详细]
蜡笔小新 2024-12-19 21:07:12
spring
C# XNA 中实现自定义 3x3 矩阵类:MMatrix33
本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ...
[详细]
蜡笔小新 2024-12-21 17:27:57
慌瓜
这个家伙很懒,什么也没留下!
Tags | 热门标签
perl
format
process
bitmap
spring
command
blob
httpclient
replace
cookie
regex
md5
cpython
require
filter
lua
scala
instance
dagger
grid
actionscrip
join
cSharp
controller
uml
cPlusPlus
chat
select
bash
tags
RankList | 热门文章
1
MySQL语句性能优化
2
求子集 递归加回溯
3
NET怎么精确计算一个对象占用的内存空间(GMK)
4
CefSharp Cookie C# 下 实现Cookie设置和读取、多开、拼多多多开采集、自动下单、WebSocket ws拦截等、PC微信多开
5
C# | BitConverter。ToInt32()方法
6
联想电脑win10怎么换win7系统?
7
mysql远程服务器数据库,远程连接MySQL服务器
8
如何分析php代码(php源码分析)
9
构建meteor应用程序_使用Meteor开发下一个Web应用程序的7个理由
10
树莓派激光发射器——superlaser
11
angular ng build报错内存溢出问题解决 Ineffective markcompacts near heap limit Allocation failed – JavaScr…
12
跟我学习javascript的this关键字_javascript技巧
13
PHP处理上传文件
14
五分钟没有操作自动退出_WYJA| 经济小白五分钟读书室
15
java 栈队列区别是什么意思_java栈和队列的区别
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有