#include <stdio.h>
#include <stdlib.h>
struct node{
int element;
struct node* firstchild;
struct node* nextsibling;
};
//前序遍历
void ProTrversal(struct node* tree)
{
if(tree!=NULL){
printf("%d ",tree->element);
struct node* temp=tree->firstchild;
while(temp!=NULL){
ProTrversal(temp);
temp=temp->nextsibling;
}
}
return;
}
//后序遍历
void PostTrversal(struct node* tree)
{
if(tree!=NULL){
struct node* temp=tree->firstchild;
while(temp!=NULL){
PostTrversal(temp);
temp=temp->nextsibling;
}
printf("%d ",tree->element);
}
return;
}
//层序遍历 队列实现,队列存储节点指针
void LevelTrversal(struct node* tree)
{
struct node* queue[100];
int head=0;
int tail=0;
if(tree!=NULL){
queue[tail]=tree;
tail++;
while(head<tail){
struct node* temp=queue[head]->firstchild;
while(temp!=NULL){
queue[tail]=temp;
temp=temp->nextsibling;
tail++;
}
head++;
}
}
//打印
for(int i=0;i<tail;i++)
printf("%d ",queue[i]->element);
return;
}
int main()
{
struct node *tree;
return 0;
}
用迭代实现树的遍历不普遍,不再探讨
树的前/中/层序遍历(前/中递归实现,层序队列实现)
最新推荐文章于 2022-03-12 14:02:44 发布