前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用c语言实现二叉树层序遍历

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

作者头像
全栈程序员站长
发布2022-08-26 09:15:57
6040
发布2022-08-26 09:15:57
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。#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.cn/143329.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档