五次树的先序遍历和后序遍历,其他高次树的遍历只需改下孩子结点个数即可。
完整代码如下
#include <stdio.h>
#include <stdlib.h>
#define maxchild 5
typedef int DataType;
struct treenode{
DataType data;
struct treenode *childs[maxchild];
};
typedef struct treenode *Tree,TreeNode;
void init(TreeNode *node,DataType x);
void PostTraverse(Tree T,int n);
void PreTraverse(Tree T,int n);
int main()
{
Tree T;
TreeNode a,b,c,d,e;
T = (TreeNode*)malloc(sizeof(TreeNode));
T->data = 10;
init(&a,11);
init(&b,12);
init(&c,13);
init(&d,14);
init(&e,15);
T->childs[1] = &b;
T->childs[2] = &c;
T->childs[3] = &d;
T->childs[4] = &e;
T->childs[0] = &a;
PostTraverse(T,5);
printf("\n");
PreTraverse(T,5);
return 0;
}
void init(TreeNode *node,DataType x)
{/*初始化一个结点*/
node->data = x;
for(int i = 0; i < maxchild;i++)
node->childs[i] = NULL;
}
/*五次树后续遍历*/
void PostTraverse(Tree T,int n)
{
int i;
if(T == NULL)
return;
for(i = 0;i < n;i++)
PostTraverse(T->childs[i],n);
printf("%6d",T->data);
}
/*五次树先序遍历*/
void PreTraverse(Tree T,int n)
{
int i;
if(T == NULL)
return;
printf("%6d",T->data);
for(i = 0;i < n;i++)
PreTraverse(T->childs[i],n);
}