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

}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL实例整理

    SQL实例整理

    2020年11月12日
    152
  • pycharm怎么换背景图片_ppt换全部背景图片

    pycharm怎么换背景图片_ppt换全部背景图片话不多说直接上教程第一步打开pycharm第二步找到file中的settings第三步打开设置找到appearance然后点击backgroundimage第四步选定图片复制图片路径进行粘贴第五步也可以点击省略号选择电脑文件中的图片比如我选的就是这个第六步设置背景图片透明度透明度从左到右依次增加最后一步接下来看成果创作不易用后请点赞三连万分感谢…

    2022年8月29日
    6
  • win2008安装mysql8.0「建议收藏」

    win2008安装mysql8.0「建议收藏」mysql升级到8.0还是有一些变动,先说一下变动的地方有有些:不能直接修改root的权限了,需要新建用户然后再设置用户的权限;更改了密码的加密方式,mysql8之前是使用的mysql_native_password规则,mysql8是使用的caching_sha2_password规则安装mysql8时win2008需要安装MicrosoftVisualC++2015补丁需要自…

    2022年7月27日
    4
  • goland 2021.5 激活码【注册码】

    goland 2021.5 激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    60
  • 正弦,余弦,正切,余切,正割,余割_三角函数的正弦余弦是什么意思

    正弦,余弦,正切,余切,正割,余割_三角函数的正弦余弦是什么意思三角函数三角函数包括正弦、余弦、正切、余切、正割、余割函数0基础知识正弦(Sine):sinA=CB/CA余弦(Cosine):cosA=AB/CA正切(Tangent):tanA=CB/BA余切(Cotangent):cotA=1/(tanA)BA/CB正割(Secant):secA=1/(cosA)=CA/AB余割(Cosecant):cosecA=1/(sinA)=CA/CB1y=sinx2y=cosx

    2025年8月6日
    4
  • 史上最全运放运算放大器知识讲解[通俗易懂]

    史上最全运放运算放大器知识讲解[通俗易懂]史上最全运放运算放大器知识讲解原文:http://www.sohu.com/a/154282071_755644调节和放大模拟信号,它是用途十分广泛的器件,接入适当的反馈网络,可用作精密的交流和直流放大器、有源滤波器滤波器的供应商、振荡器振荡器的供应商及电压比较器比较器的供应商。其应用领域已经延伸到汽车电子、通信、消费等各个领域,并将在未来技术方面扮演重要角色。运算放大器的分类…

    2022年4月30日
    109

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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