用c语言实现二叉树层序遍历

用c语言实现二叉树层序遍历#include<stdio.h>#include<stdlib.h>#defineN8typedefstructnode{ intdata; structnode*left,*right;}BTNode;BTNode*CreateTree(inta[]){ inti; BTNode*p,*c,*pa,*root; root=(BTNode*)mal…

大家好,又见面了,我是你们的朋友全栈君。#include<stdio.h>

#include<stdlib.h>

#define N 8

typedef struct node{

int data;

struct node *left,*right;

}BTNode;

BTNode *CreateTree(int a[]){

int i;

BTNode *p,*c,*pa,*root;

root=(BTNode *)malloc(sizeof(BTNode));

root->data=a[0];

root->left=root->right=NULL;

for(i=1;i<N;i++){

p=(BTNode *)malloc(sizeof(BTNode));

p->data=a[i];

p->left=p->right=NULL;

c=root;

while(c){

pa=c;

if(c->data>p->data)

c=c->left;

else

c=c->right;

}

if(pa->data>p->data)

pa->left=p;

else

pa->right=p;

}

return root;

}

void print(BTNode *root){

BTNode **Q;

//创建一个容量为N的队列来存储完全二叉树的节点 

Q=(BTNode**)malloc(N*sizeof(BTNode*));

int front,rear;

front=rear=0;

BTNode *c=root;

BTNode *pa;

while(c){

//若有左子女,左子女入队列,若有右子女则右子女入队列

if(c->left)

Q[rear++]=c->left;

if(c->right)

Q[rear++]=c->right;

printf(“%d  “,c->data);

//更新当前根节点

c=Q[front++];

}

}

void Forder(BTNode *root){

if(root){

printf(“%5d”,root->data);

Forder(root->left);

Forder(root->right);

}

}

int main(){

//-100表示不存在的节点 

int a[N]={5,4,6,8,2,9,7,3}; 

BTNode *root;

root=CreateTree(a); 

//栈实现完全二叉树的前序遍历

    print(root);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143329.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 本地phpstudy开发中apache可以用,nginx不可用,

    本地phpstudy开发中apache可以用,nginx不可用,

    2021年10月12日
  • idea 在线激活码_在线激活

    (idea 在线激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html0VOERWDQ5R-eyJsaWNlbnNlSWQi…

  • c++中的排序函数Sort的具体用法(vb中sort函数怎么用)

    最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数用法1、sort函数可以三个参数也可以两个参数,必须的头文件#include和usingnamespacestd;2、它使用的排序方法是类似于快排的方法,时间复

  • ie11安装程序遇到错误_ie11卸载不了发生错误

    ie11安装程序遇到错误_ie11卸载不了发生错误初始故障:360浏览器、ie浏览器启动后卡死,首先卸载360浏览器,出现异常,随后程序卸载中卸载ie11,重新添加时,报错0x8000ffff故障描述:无法安装ie相关内容,所有浏览器无法下载软件程序,windows搜索按钮打开无内容,所有windows组件无法添加,报错0x8000ffff,程序可选功能卸载ie11失败解决步骤:1.sfc/scannow,提示修复程序运行中,请重新启动。删除pending.xml,使用sfc/scannow扫描出错误文件,提示无法修复2.使用DISM.exe

  • MT4安卓版下载安装

    MT4安卓版下载安装投资者安卓手机可以使用MT4软件吗?答案是:当然可以。MT4软件作为投资者通用的交易软件mt4.M1.xinclo.xyz涵盖了多个版本,电脑版MT4、手机版(包含IOS和安卓)MT4、MAC版MT4。如果是安卓手机,下载和安装安卓版的即可。安卓手机是无法在应用商店搜索到MT4的,因此大多都在网页上先获取安装包。下载交易软件,该软件商店中的移动终端。点击安装,软件会存储在手机桌面上,主界面上会显示MT4交易系统软件。…

  • 安装Pytorch-gpu版本(第一次安装 或 已经安装Pytorch-cpu版本后)

    安装Pytorch-gpu版本(第一次安装 或 已经安装Pytorch-cpu版本后)由于已经安装了cpu版本了,如果再在该环境下安装gpu版本会造成环境污染.因此,再安装gpu版本时,需要再新建一个虚拟环境才能安装成功。然后去官网下载所适配的版本。安装完cuda和cudnn后,开始安装pytorch的gpu版本。1.安装cude首先查看windows电脑之前是否成功安装了CUDA第一步:同时按键盘上的“windows键+R”,输入“cmd”并回车,进入windows的命令行界面。第二步:命令行里输入“nvcc-V”并回车第三步:如果已经成功安装CUDA的话,.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号