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

2022-08-26 09:15:57 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。#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(“]”,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

0 人点赞