用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)


相关推荐

  • 面试题总结 —— JAVA高级工程师[通俗易懂]

    面试题总结 —— JAVA高级工程师[通俗易懂]面试题总结——JAVA高级工程师近期考虑换工作的问题,于是投简历面试,面试5家公司的高级Java工程师,有4家给了我offer,想着总结一下面试经验,方便最近正在寻求机会的你们一、无笔试题不知道是不是职位原因还是没遇到,面试时,都不需要做笔试题,而是填张个人信息表格,或者直接面试二、三大框架方面问题1、Spring事务的隔离性,并说说每个隔离性的…

  • a4988 脉宽要求_A4988步进电机驱动模块谁用过?

    a4988 脉宽要求_A4988步进电机驱动模块谁用过?A4988是一款完全的微步电动机驱动器,带有内置转换器,易于操作。该产品可在全、半、1/4、1/8及1/16步进模式时操作双极步进电动机,输出驱动性能可达35V及±2A。A4988包括一个固定关断时间电流稳压器,该稳压器可在慢或混合衰减模式下工作。转换器是A4988易于实施的关键。只要在“步进”输入中输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高频率控制行或复…

  • ArcGIS二次开发入门(一)「建议收藏」

    ArcGIS二次开发入门(一)「建议收藏」作者:朱金灿来源:http://blog.csdn.net/clever101      公司培训ArcGIS二次开发(C#作为开发语言),自己回家动手实践了一下。 1.首先是二次开发环境的安装,需要装下面两项:

  • 生命游戏程序_生命游戏怎么玩

    生命游戏程序_生命游戏怎么玩引言群居性昆虫是一个生命,鱼群、鸟群是一个生命,社会、城市是一个有机体,人类的语言是活的,人类的集体行为也是活的。这些复杂系统是如何设计出来的?世界上最著名的游戏之一,GameofLife生命游戏,为这些最神秘的问题提出了可能的解释——也许再复杂的生命,最初也不过是几条最简单的规则。本文从GameofLife的缘起说起,解释了它这几十年给予数学、计算机、哲学的启发,最后把它作为P…

    2022年10月17日
  • 返回顶部的几种方法总结

    返回顶部的几种方法总结返回顶部的几种方法总结

  • 深入解析FastClick解决延迟点击

    深入解析FastClick解决延迟点击下载源码和文档gitHub上都有,有兴趣的可以去逛逛https://github.com/ftlabs/fastclick使用

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