五次树的先序遍历和后序遍历,其余高次树的遍历只需改下孩子结点个数便可。node
完整代码以下web
#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); }